Java

Java / 인터럽트

Dear-J 2025. 5. 16. 14:39

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