하나의 Object wait set에는 생산자와 소비자 역할이 섞인다

notify 한 번이 현재 진행할 수 없는 역할을 깨우면 유효한 상대가 계속 잠들 수 있습니다.

Object monitor공용 wait set

producer P1

notFull 대기

producer P2

notFull 대기

consumer C1

notEmpty 대기

consumer C2

notEmpty 대기

notify

역할 선택 불가

핵심: 단일 대기 집합에서는 notifyAll과 while 재검사로 생존성을 우선합니다.