Java 스레드의 상태와 생명주기

이진호·2022년 9월 14일
0

Java Multithreading

목록 보기
2/3
post-thumbnail

스레드의 상태와 생명주기

스레드의 상태와 생명주기

코드 내에서 Thread.getState() 메서드를 통해 스레드의 현재 상태를 조회할 수 있습니다. 스레드의 상태는java.lang.Thread.State에 ENUM 상수로 정의되어있습니다.

1. New

아직 시작되지 않은 스레드의 상태입니다.

2. Runnable

실행 가능한 스레드의 상태입니다. 실행 가능한 상태의 스레드가 Java 가상 머신에서 실행 중이지만 프로세서와 같은 운영 체제의 다른 리소스를 기다리고 있을 수 있습니다.

3. Blocked

모니터 잠금을 기다리는 차단된 스레드의 상태입니다. 차단된 상태의 스레드는 모니터 잠금이 동기화된 블록/메서드에 들어가거나 호출 후 동기화된 블록/메서드에 다시 들어가기를 기다리고 있습니다.

4. Waiting

대기 중인 스레드의 상태입니다. 다음 메서드 중 하나를 호출하여 스레드를 대기 상태로 만들 수 있습니다.

  • Object.wait with no timeout
  • Thread.join with no timeout
  • LockSupport.park

대기 상태의 스레드는 다른 스레드가 특정 작업을 수행하기를 기다리고 있습니다. 예를 들어, 객체에서 Object.wait()를 호출한 스레드는 다른 스레드가 해당 객체에서 Object.notify() 또는 Object.notifyAll()을 호출하기를 기다리고 있습니다. Thread.join()을 호출한 스레드는 지정된 스레드가 종료되기를 기다리고 있습니다.

5. Timed Waiting

지정된 대기 시간이 있는 대기 스레드의 상태입니다. 메서드 중 하나를 호출하여 스레드를 Timed Waiting 상태로 만들 수 있습니다.

  • Thread.sleep
  • Object.wait with timeout
  • Thread.join with timeout
  • LockSupport.parkNanos
  • LockSupport.parkUntil

6. TERMINATED

스레드가 실행을 완료하여 종료된 상태입니다.

출처

0개의 댓글