Java

[Java의 정석] 13-3. 스레드: 실행 제어

noahkim_ 2023. 11. 30. 14:33

남궁성 님의 "Java의 정석" 책을 정리한 포스팅 입니다.

 

8. 실행 제어

 

상태

NEW 스레드가 생성되고 아직 start()되지 않은 상태
RUNNABLE 실행중 또는 실행 가능한 상태
BLOCKED 동기화 블럭에 의해 일시정지된 상태
WAITING,
TIMED_WAITING
일시정지 상태(작업이 종료되지 않음) 
일시정지 시간이 지정된 경우
TERMINATED 작업이 종료된 상태

 

 

메서드

sleep() 지정된 시간동안 스레드를 정지시킵니다.
지정한 시간이 지나고 나면 자동적으로 다시 실행대기 상태가 됩니다.
join() 자신이 하던 작업을 멈추고 다른 스레드의 작업을 기다립니다.
지정한 시간동안 스레드가 실행되도록 합니다.
지정한 시간이 지나거나 작업이 종료되면 join()을 호출한 스레드로 다시 돌아와 실행을 계속합니다.
interrupt() sleep()이나 join()에 의해 일시정지인 스레드를 깨워 대기상태를 만듭니다.
stop() 스레드를 종료시킵니다.
suspend() 스레드를 일시정지시킵니다.
resume() 일시정지되있는 스레드를 실행 대기상태로 만듭니다.
yield() 실행중에 자신에게 주어진 실행시간을 다른 스레드에게 양보하고 자신은 실행 대기상태가 됩니다.

 

라이프사이클

생성
  • 바로 실행되는 것이 아니라 실행 대기열에 저장되어 기다립니다.

 

실행
  • 자신의 차례가 되면 실행합니다.

 

 일시정지
  • 실행 중 suspend(), sleep(), wait(), join()에 의해 일시정지가 될 수 있습니다.

 

대기
  • 주어진 실행시간이 다 되거나 yield()를 호출하면 다시 대기상태가 되며, 다음 스레드가 실행됩니다.
  • 일시정지 중 timeout, notify(), resume(), interrupt()가 되면 대기상태로 돌아갑니다.

 

출처