쓰레드의 스케줄링과 관련된 메서드
void interrupt() : sleep()이나 join()에 의해 일시정지상태인 쓰레드를 실행대기 상태로 만든다.
void join(), join(long millis) : 지정된 시간동안 쓰레드가 실행되도록 한다. / 해당 쓰레드가 종료될때 까지 main 쓰레드는 대기한다.
void resume() : suspend()에 의해 일시정지상태에 있는 쓰레드를 실행대기상태로 만든다.
static void sleep(long miillis) : 지정된 시간 동안 쓰레드를 일시정지 시킨다. 시간이 지난후 다시 실행대기상태가 된다.
void stop() : .쓰레드를 즉시 종료신킨다.
void suspend() : 쓰레드를 일시정지 시킨다.
static void yield() : 실행중에 다른 쓰레드에게 양보하고 실행대기 상태가 된다.
쓰레드의 상태
NEW : 쓰레드가 생성되고 아직 START() 호출되지 않은 상태
RUNNABLE : 실행 중 또는 실행 가능한 상태
BLOCKED : 동기화블럭에 의해서 일시정지된 상태(LOCK이 풀릴 때까지 기다리느상태)
WATING, TIMED_WAITING : 쓰레드으 ㅣ작업이 종료되지는 않았지만 실행가능하지 않은 일시정지 상태
TERMINATED : 작업이 종료된 상태
응용
1. Thread t1과 t2가 동시에 실행될때 순차적으로 진행하고 싶을 경우
t1.start()
t2.start()
t1.join() // t1이 끝날때까지 기다린다.
2. 현재 실행 중인쓰레드를 일시 정지(sleep)시키거나 양보하고 싶을 경우(yield)의 경우에는
t1.sleep(1000), t1.yield()가 아니라 Thread.sleep(1000), Thread.yield를 사용해야 한다.
왜냐면 이 둘은 항상 현재 실행중인 쓰레드에 대해 작동하기 때문에 t1.sleep(1000)이라 했어도 실제 영향을 받는것은 main쓰레드 이기 때문이다.
'JAVA > Thread' 카테고리의 다른 글
synchronous vs asynchronous (0) | 2016.12.24 |
---|---|
멀티 스레드 (0) | 2016.12.21 |
JAVA 데몬 스레드 소개 (0) | 2016.12.21 |
synchronized 쓰레드 예제 프로그래밍 (0) | 2016.12.21 |
Thread wait(), notify() 소개 (0) | 2016.12.21 |