[java] 스레드 상태(State)의 종류는?
  1. NEW: 스레드가 생성되었지만 아직 start() 메서드가 호출되지 않은 초기 상태입니다.
  2. RUNNABLE: start() 메서드가 호출되어 실행 준비가 된 상태입니다. 모든 스레드는 이 상태에서 실행됩니다.
  3. BLOCKED: 스레드가 락(lock)을 얻기 위해 대기 중인 상태입니다. 다른 스레드가 해당 락을 소유하고 있을 때 발생합니다.
  4. WAITING: 스레드가 특정 조건이 충족될 때까지 대기 중인 상태입니다. 다른 스레드가 특정 스레드의 notify()notifyAll() 메서드를 호출할 때까지 기다리게 됩니다.
  5. TIMED_WAITING: WAITING 상태와 유사하지만, 일정 시간동안만 대기하다가 자동으로 깨어나는 상태입니다. 이는 Thread.sleep() 메서드나 동기화된 객체의 wait(timeout) 메서드 호출로 발생합니다.
  6. TERMINATED: 스레드의 실행이 완료되거나 interrupt() 메서드를 통해 강제로 멈춘 상태입니다.

스레드 상태는 Thread 클래스의 getState() 메서드를 통해 확인할 수 있습니다. 또한, Thread.State 열거형을 이용하여 상태를 비교하거나 조건문에 활용할 수 있습니다.

예를 들어, 다음은 스레드 상태를 출력하는 예제 코드입니다:

Thread thread = new Thread(() -> {
    // 스레드 실행 코드
});

thread.start();

Thread.State state = thread.getState();
System.out.println("스레드 상태: " + state);

참고 문서: