쓰레드의 스케줄링과 관련된 메서드

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
쓰레드 개념정리  (0) 2016.12.21
JAVA 데몬 스레드 소개  (0) 2016.12.21
synchronized 쓰레드 예제 프로그래밍  (0) 2016.12.21
Thread wait(), notify() 소개  (0) 2016.12.21

+ Recent posts