알림을 받은 스레드는 대기 집합과 모니터 경쟁이라는 두 관문을 거친다.
모니터를 가진 상태로 공유 술어가 거짓인지 확인한다.
wait 호출이 스레드를 객체 대기 집합에 넣고 락을 반납한다.
다른 역할이 모니터를 얻어 값을 바꾸고 알림을 보낸다.
깨어난 스레드가 모니터를 얻은 뒤 술어를 다시 검사한다.
핵심: notify는 즉시 실행권이 아니라 모니터 재경쟁에 참여할 기회를 준다.