wait 호출 시점과 반환 뒤 코드 모두 같은 monitor 계약 안에 있습니다.
synchronized 진입
wait 호출
WAITING 집합 이동
entry 경쟁으로 이동
lock 얻은 뒤 반환
핵심: notify는 바로 lock을 넘기지 않으므로 깨어난 thread는 소유자가 나갈 때까지 다시 경쟁합니다.