synchronized로 동기화해서 공유 데이터를 보호하는 것 까지는 좋지만
만약 특정 쓰레드가 락을 가진 상태로 오랜 시간 보낸다면 곤란하다.
이러한 문제를 개선하기 위해 고안된 것이 wait(), notify() 이다.
임계 영역의 코드를 수행하다 더 이상 진행할 상황이 아니면 wait()를 호출하여 lock을 반납
작업을 진행할 상황이 되면 notify() 호출
단 lock을 반납하더라도 오래 기다린 Thread가 lock을 얻는다는 보장이 없다.
'Java > Java' 카테고리의 다른 글
(JAVA) equals에 대해서(1) (0) | 2020.01.31 |
---|---|
(JAVA) Integer Cache (0) | 2020.01.29 |
(JAVA) 쓰레드 동기화 (0) | 2020.01.25 |
(JAVA) 쓰레드의 실행제어 - join() (0) | 2020.01.25 |
(JAVA) 쓰레드의 실행제어 - suspend(), resume(), stop(), yield() (0) | 2020.01.25 |