기초 공부 (언어 및 알고리즘)/개발 언어 기초
[JAVA] Thread 상태
iinana
2024. 4. 10. 21:40
자바 공부 중 스레드 상태에 대한 내용을 자꾸 까먹게 되어 정리한 것에 대한 기록이다. 아래 책을 공부 중이다.
신용권, 임경균, 『이것이 자바다』, 한빛미디어(2023), p120-121.
1. Thread 상태의 3단계
아래 그림과 같이 Thread는 크게 3가지 상태를 가진다. 첫 번째는 스레드 객체가 새로 생성되는 객체 생성 단계이고, 두 번째는 실행을 기다리고 있는 상태인 실행 대기 상태이다. 실행 대기 중인 스레드들은 CPU 스케쥴링에 따라서 실행상태 <-> 실행대기상태를 반복하다가 일시정지가 되기도 하고 다시 실행 대기 상태가 되기도 한다. 이후 run() 메서드가 종료되어 더 이상 실행할 코드가 없으면 종료 상태에 도달하게 된다.
Thread 객체 생성 [ NEW ] |
실행 대기 [ RUNNABLE ] |
종료 [ TERMINATED ] |
||
일시정지 | ㅣ | ㅣ | ||
ㅣ__ | __ 실행 __ | __ __ | __ |
2. 일시정지를 위한 메소드
--> 일시 정지 | Thread.sleep(long milis) | |
Object.join() | join() 메소드를 호출한 스레드가 일시정지 상태로. join() 메소드를 가진 스레드가 종료되면 다시 실행 대기 상태로. (ex. main thread에서 threadA.join()을 호출하면 threadA가 종료될 때까지 main thread는 일시정지 상태) |
|
Object.wait() | ||
일시 정지 --> | Thread.interrupt() | [-> 실행대기 / 종료], thread 안전 종료에 이용 |
Object.notify() Object.notifyAll() |
[wait() 일시정지 -> 실행 대기] | |
실행 --> 실행 대기 | Thread.yield() |
728x90
반응형