본문 바로가기

JAVA

interrupt vs notify

728x90

 

공통점 : 둘다 wait 셋에 있는 쓰레드를 깨우는 역할을 한다.

 

차이점

 

notify : Object 클래스의 함수

interrupt : Thread 클래스의 함수

 

 

notify : wait 셋에 있는 쓰레드 중 하나를 랜덤하게 깨움 (waiting 상태의 쓰레드가 Runnable 상태로 바뀐다.)

interrupt : 특정 쓰레드를 wait 셋에서 깨운다. 이 때, InterruptedException이 발생한다.

(참고로, 오라클 문서에서는 interrupt를 쓰레드 취소 용도로만 사용할 것을 권장한다.) 

 

+ 추가

notifyAll : wait 셋에 있는 쓰레드 모두를 깨운다.

 

 

stackoverflow.com/questions/30471285/what-is-the-difference-between-wait-notify-and-wait-interrupt

docs.oracle.com/javase/8/docs/api/java/lang/Thread.html