남궁성 님의 "Java의 정석" 책을 정리한 포스팅 입니다.
8. 실행 제어
상태
NEW | 스레드가 생성되고 아직 start()되지 않은 상태 |
RUNNABLE | 실행중 또는 실행 가능한 상태 |
BLOCKED | 동기화 블럭에 의해 일시정지된 상태 |
WAITING, TIMED_WAITING |
일시정지 상태(작업이 종료되지 않음) 일시정지 시간이 지정된 경우 |
TERMINATED | 작업이 종료된 상태 |
메서드
sleep() | 지정된 시간동안 스레드를 정지시킵니다. 지정한 시간이 지나고 나면 자동적으로 다시 실행대기 상태가 됩니다. |
join() | 자신이 하던 작업을 멈추고 다른 스레드의 작업을 기다립니다. 지정한 시간동안 스레드가 실행되도록 합니다. 지정한 시간이 지나거나 작업이 종료되면 join()을 호출한 스레드로 다시 돌아와 실행을 계속합니다. |
interrupt() | sleep()이나 join()에 의해 일시정지인 스레드를 깨워 대기상태를 만듭니다. |
stop() | 스레드를 종료시킵니다. |
suspend() | 스레드를 일시정지시킵니다. |
resume() | 일시정지되있는 스레드를 실행 대기상태로 만듭니다. |
yield() | 실행중에 자신에게 주어진 실행시간을 다른 스레드에게 양보하고 자신은 실행 대기상태가 됩니다. |
라이프사이클
생성
- 바로 실행되는 것이 아니라 실행 대기열에 저장되어 기다립니다.
실행
- 자신의 차례가 되면 실행합니다.
일시정지
- 실행 중 suspend(), sleep(), wait(), join()에 의해 일시정지가 될 수 있습니다.
대기
- 주어진 실행시간이 다 되거나 yield()를 호출하면 다시 대기상태가 되며, 다음 스레드가 실행됩니다.
- 일시정지 중 timeout, notify(), resume(), interrupt()가 되면 대기상태로 돌아갑니다.
출처
'Java' 카테고리의 다른 글
[Java][Tutorial] 1-3. Learning the Java Language: Classes and Objects (0) | 2024.01.14 |
---|---|
[Java][Tutorial] 1-2. Learning the Java Language: Language Basics (0) | 2024.01.14 |
[Java의 정석] 13-4. 스레드: 동기화 (0) | 2023.11.30 |
[Java의 정석] 15-6. 입출력: Serialization (0) | 2023.11.29 |
[Java의 정석] 15-5. 입출력: File (1) | 2023.11.29 |