코드 내에서 Thread.getState() 메서드를 통해 스레드의 현재 상태를 조회할 수 있습니다. 스레드의 상태는java.lang.Thread.State
에 ENUM 상수로 정의되어있습니다.
아직 시작되지 않은 스레드의 상태입니다.
실행 가능한 스레드의 상태입니다. 실행 가능한 상태의 스레드가 Java 가상 머신에서 실행 중이지만 프로세서와 같은 운영 체제의 다른 리소스를 기다리고 있을 수 있습니다.
모니터 잠금을 기다리는 차단된 스레드의 상태입니다. 차단된 상태의 스레드는 모니터 잠금이 동기화된 블록/메서드에 들어가거나 호출 후 동기화된 블록/메서드에 다시 들어가기를 기다리고 있습니다.
대기 중인 스레드의 상태입니다. 다음 메서드 중 하나를 호출하여 스레드를 대기 상태로 만들 수 있습니다.
대기 상태의 스레드는 다른 스레드가 특정 작업을 수행하기를 기다리고 있습니다. 예를 들어, 객체에서 Object.wait()를 호출한 스레드는 다른 스레드가 해당 객체에서 Object.notify() 또는 Object.notifyAll()을 호출하기를 기다리고 있습니다. Thread.join()을 호출한 스레드는 지정된 스레드가 종료되기를 기다리고 있습니다.
지정된 대기 시간이 있는 대기 스레드의 상태입니다. 메서드 중 하나를 호출하여 스레드를 Timed Waiting 상태로 만들 수 있습니다.
스레드가 실행을 완료하여 종료된 상태입니다.
출처