JAVA/Thread

쓰레드 개념정리

반응형

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

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