본문 바로가기

강좌/JAVA THREAD

자바 쓰레드(Thread) - Thread클래스를 상속받아 구현 첫번째로 Thread를 상속받아 예제를 만들어 보자. 생성자중 스트링 변수를 받는 생성자가 있는데 이걸로 쓰레드 이름을 넣을 수 있고 getName() 으로 가져올수 있다. 일단 예제를 보자 ThreadTest라는 클래스를 만들고 main메소드를 만들어서 두개의 쓰레드를 생성하였다. 그럼 이 소스에는 몇개의 쓰레드가 있을까? 2개? 아니다 3개다. 메인메소드도 하나의 쓰레드이다. 따라서 이 클래스에는 3개가 있다. 쓰레드의 시작은 레퍼런스.start();를 시스템에게 명령하면 이는 곧바로 run을 실행한다. 위의 소스 결과는 차례대로 숫자가 나왔지만 다시 실행하면 다른 결과값이 나온다. 차례대로 나올꺼라고 단정하면 절대 안되다 더보기
자바 쓰레드(Thread) - 쓰레드를 구현하는 2가지 방법 1. Thread 클래스와 Runnable인터페이스 * 자바에서는 스레드를 지원하는 방식은 크게 두가지 방식이 있다. - java.lang.Thread클래스를 사용하는 방식(White Box Pattern) - java.lang.Runable인터페이스를 사용하는 방식(Black Box Pattern) 사실 자바API를 보면 Thread클래스는 Runnable을 상속받고 있다. 더보기
자바 쓰레드(Thread) - 멀티 쓰레드(Multi-Thread) * 스레드 기반 멀티 태스킹에서는 스레드가 가장 작은 코드 단위이다. * 즉, 단일 프로그램이 두개 이상의 태스크(task)를 동시에 수행할 수 있다는 것을 의미(멀티쓰레딩) * 프로그램에서 발생하는 유휴시간(idle time)을 이용할 수 있는 효율적인 프로그램을 개발 가능 * 대부분의 I/O장치는 CPU보다 느리기 때문에, 이들을 사용하는 프로그램은 많은 시간을 이들로부터 정보를 주고 받는 과정에서 소비한다. * 멀티 쓰레딩을 이용하면 이러한 유휴시킨에 다른 태스크를 수행할 수 있다. * 멀티 쓰레딩이 지원되지 않던 시절에는 이터럽트 등의 편범을 이용해서 프로그래밍 * 자바에서는 언어 차원에서 스레드를 지원한다. * 모든 프로세스는 적어도 하나의 실행되는 스레드를 갖고 있어야 하며, 프로그램이 시작 .. 더보기
자바 쓰레드(Thread) - 멀티 태스킹 (Multi-Tasking) 1. 멀티 태스킹 - Multi-Tasking (= 멀티프로세스와 거의 유사함) * 하나의 CPU가 여러 개의 프로세스를 교대로 수행하는것 * 각각의 일을 전담하는 해당 프로그램들이 동시에 실행되고 있다는것을 의미 * 일반적으로 멀티 태스킹을 위해서는 여러 개의 프로세스가 메모리 상에서 동시에 실행 * 현재 운영체제들이 취한 방식은 멀티 프로세스 시스템이다. * 멀티 프로세스 시스템에서 각 프로세스는 동시에 실행되는 것처럼 보이지만, CPU가 하나이기 때문에 , 실은 실행 시간을 잘게 나누어서 각 프로세스들이 돌아가면서 CPU를 점유하고 있는 것이다. * 프로세스간의 이런 CPU의 점유작업을 ProcessScheduling이라고 한다. * 프로세스는 실행중인 프로그램이다. * 스케줄러에 의해 처리되는 가.. 더보기