Interrupt
WAITING, TIMED_WAITING 같은 대기 상태의 스레드를 직접 깨워
>> 작동하는 RUNNABLE 상태로 만듦
interrupt가 발생하면 해당 스레드에 InterruptedException 발생
>> 대기 상태에서 꺠어나 RUNNABLE 상태가 되고 코드 정상 수행
>> InterruptedException을 catch로 잡아 정상 흐름으로 변경
Thread.interrupted()는 스레드가 interrupt 상태면 true를 반환하고 다시 상태를 false로 바로 변경
>> 스레드의 interrupt 상태를 정상으로 돌리지 않으면 이후에도 계속 interrupt가 발생
>> interrupt 목적을 달성하면 상태를 다시 정상으로 돌려야함
yield
Thread.yield() 메서드는 현재 실행 중인 스레드가 자발적으로 CPU를 양보하여 다른 스레드가 실행되게 함
>> RUNNABLE 상태를 유지하면서 CPU를 양보
CPU 코어 수 이상의 스레드를 만들어야 양보하는 상황 확인 가능
출처 : 김영한, 김영한의 실전 자바 - 고급 1편
'Java' 카테고리의 다른 글
Java / 동기화 Synchronized (0) | 2025.05.22 |
---|---|
Java / 메모리 가시성 (0) | 2025.05.19 |
Java / 스레드 제어와 생명 주기 (0) | 2025.05.15 |
Java / 스레드 생성과 실행 (0) | 2025.05.12 |
Java / 프로세스와 스레드 (0) | 2025.05.11 |