wait에서 임계 영역 복귀까지

알림을 받은 스레드는 대기 집합과 모니터 경쟁이라는 두 관문을 거친다.

  1. 조건 검사

    모니터를 가진 상태로 공유 술어가 거짓인지 확인한다.

  2. 대기 등록

    wait 호출이 스레드를 객체 대기 집합에 넣고 락을 반납한다.

  3. 상태 변경

    다른 역할이 모니터를 얻어 값을 바꾸고 알림을 보낸다.

  4. 재획득

    깨어난 스레드가 모니터를 얻은 뒤 술어를 다시 검사한다.

핵심: notify는 즉시 실행권이 아니라 모니터 재경쟁에 참여할 기회를 준다.