스레드의 생명 주기
- New(생성) : 스레드 객체가 생성되었지만 아직 start() 메서드가 호출되지 않은 상태입니다.
- Runnable(실행 대기) : start() 메서드가 호출되어 스레드가 실행 가능한 상태입니다.
- Running(실행) : 스레드가 CPU를 할당받아 실행되는 상태입니다. 스레드는 해당 작업을 수행하며 코드를 실행합니다.
- Blocked(차단) : 스레드가 실행 중에 특정 이벤트 발생 등으로 인해 더 이상 실행을 진행할 수 없는 상태입니다. Runnable 상태로 전환될 때까지 대기를 합니다.
- Waiting(대기) : 스레드가 특정 조건을 만족할 때까지 기다리는 상태입니다. 스레드가 다른 스레드로부터 신호를 받을 때 사용될 수 있습니다.
- Timed Waiting(시간 대기) : 대기 시간이 지정된 상태로, 특정 시간이 지나면 다시 Runnable 상태로 돌아갑니다.
- Terminated(종료) : 스레드의 실행이 완료되거나 강제로 종료되었을 때의 상태입니다. 이 상태에서는 더 이상 스레드가 실행되지 않습니다.
스레드의 상태 전이
스레드가 생성되어 실행 가능한 상태로 전환되기 위해서는 start() 메서드를 호출해야 합니다. 이후 스레드 스케줄러에 의해 선택되어 Running 상태로 전환됩니다.
스레드가 Blocked 상태에 있을 때는 해당 상태를 벗어나기 위한 조건이 충족되어야 하며, Waiting 및 Timed Waiting 상태에서는 특정 이벤트나 시간이 경과하여 해당 상태를 벗어납니다.
New -> start() -> Runnable -> run() -> Running -> 사건 발생 -> Blocked -> Waiting, Timed Waiting -> Runnable -> Running -> Terminated
'JAVA > 스레드' 카테고리의 다른 글
[JAVA] 스레드 우선순위 설정과 데몬 스레드 (0) | 2023.08.30 |
---|---|
[JAVA] 스레드의 생성과 실행: Java로 구현하는 방법 (0) | 2023.08.30 |
[JAVA] Runnable 인터페이스와 Thread 클래스(sleep, join, interrupt) (0) | 2023.08.30 |
[JAVA] 프로세스와 스레드의 차이 (0) | 2023.08.30 |
[JAVA] 스레드의 정의 및 장점과 단점 (0) | 2023.08.29 |