728x90
스레드(Thread) 는 프로세스 내에서 실행되는 작은 실행 단위로, 프로세스의 자원을 공유하면서 병렬로 실행될 수 있도록 합니다.
스레드는 여러가지 상태를 가지며, 이는 스레드의 실행 상태에 따라 다양하게 변화합니다.
[ 스레드의 다양한 상태 ]
1. 생성(New)
- 스레드가 아직 시작되지 않은 초기 상태
- 스레드 객체가 생성되었지만 start() 메서드를 호출하여 실행되기 전 상태
2. 실행(RUNNABLE)
- 스레드가 실행 가능한 상태
- 실행 가능한 스레드는 프로세서의 할당을 기다리고 있으며, 스케줄러에 의해 선택되어 실행될 준비가 되어있음
3. 대기(BLOCKED/WAITING/TIMED_WAITING)
- 스레드가 다른 이벤트를 기다리는 상태
- 스레드가 락을 얻지 못한 상태나 특정 조건을 만족하기 위해 일시적으로 기다리는 상태
- BLOCKED : 다른 스레드에 의해 보유된 동기화 락을 얻기 위해 기다리는 상태
- WAITING : 다른 스레드가 특정 작업을 알릴 때까지 기다리는 상태
- 다른 스레드가 해당 스레드를 notify() 또는 notifyAll() 로 깨울 때까지 대기한다
- TIMED_WAITING : 일정 시간 동안 기다리는 상태로, 특정 시간이 지나면 자동으로 대기상태에서 벗어남
4. 종료(TERMINATED)
- 스레드의 실행이 완료된 상태
- run() 메서드가 정상적으로 종료되거나 예외가 발생한 후에 스레드는 종료 상태가 됨
스레드는 이러한 상태들을 변화하면서 프로그램의 실행 흐름을 조절하고, 스레드 간의 동기화의 협력을 통해 병렬 처리를 가능하게 합니다.
728x90
'3.multi-threading' 카테고리의 다른 글
thread run()과 tnread start()의 차이 / 스레드가 필요한 상황 - 쇼핑몰웹 예시 (0) | 2023.07.31 |
---|---|
sleep() vs wait() / notify() vs notifyAll() (0) | 2023.07.27 |
runnable과 callable의 차이는 ? (0) | 2023.07.25 |
데몬 스레드란? / 스레드를 만드는 방법 (0) | 2023.07.24 |
스레드와 프로세스의 차이 (0) | 2023.07.21 |