울음참고 개발공부
728x90

 

 

스레드(Thread) 는 프로세스 내에서 실행되는 작은 실행 단위로, 프로세스의 자원을 공유하면서 병렬로 실행될 수 있도록 합니다.
스레드는 여러가지 상태를 가지며, 이는 스레드의 실행 상태에 따라 다양하게 변화합니다. 

 

 

[ 스레드의 다양한 상태 ]

 

 

1. 생성(New) 

 

  • 스레드가 아직 시작되지 않은 초기 상태
  • 스레드 객체가 생성되었지만 start() 메서드를 호출하여 실행되기 전 상태

 

 

2. 실행(RUNNABLE) 

 

  • 스레드가 실행 가능한 상태
  • 실행 가능한 스레드는 프로세서의 할당을 기다리고 있으며, 스케줄러에 의해 선택되어 실행될 준비가 되어있음

 

 

3. 대기(BLOCKED/WAITING/TIMED_WAITING) 

 

  • 스레드가 다른 이벤트를 기다리는 상태
  • 스레드가 락을 얻지 못한 상태나 특정 조건을 만족하기 위해 일시적으로 기다리는 상태
    • BLOCKED : 다른 스레드에 의해 보유된 동기화 락을 얻기 위해 기다리는 상태
    • WAITING : 다른 스레드가 특정 작업을 알릴 때까지 기다리는 상태
      • 다른 스레드가 해당 스레드를 notify() 또는 notifyAll() 로 깨울 때까지 대기한다
    • TIMED_WAITING : 일정 시간 동안 기다리는 상태로, 특정 시간이 지나면 자동으로 대기상태에서 벗어남

 

 

4. 종료(TERMINATED)

 

  • 스레드의 실행이 완료된 상태
  • run() 메서드가 정상적으로 종료되거나 예외가 발생한 후에 스레드는 종료 상태가 됨

 

 

 

스레드는 이러한 상태들을 변화하면서 프로그램의 실행 흐름을 조절하고, 스레드 간의 동기화의 협력을 통해 병렬 처리를 가능하게 합니다.

 

 

 

 

 

 

 

728x90
profile

울음참고 개발공부

@메각이

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!