본문 바로가기

Java/Java

(JAVA) wait() 와 notify()

synchronized로 동기화해서 공유 데이터를 보호하는 것 까지는 좋지만

만약 특정 쓰레드가 락을 가진 상태로 오랜 시간 보낸다면 곤란하다.

이러한 문제를 개선하기 위해 고안된 것이 wait(), notify() 이다.

 

임계 영역의 코드를 수행하다 더 이상 진행할 상황이 아니면 wait()를 호출하여 lock을 반납

작업을 진행할 상황이 되면 notify() 호출

 

단 lock을 반납하더라도 오래 기다린 Thread가 lock을 얻는다는 보장이 없다.