두 Condition과 신호 방향

상태를 바꾼 역할은 방금 통과 가능해진 반대 역할의 대기실을 깨운다.

공유 ReentrantLock

notFull

생산자가 빈칸을 기다리는 전용 대기실이다.

notEmpty

소비자가 항목을 기다리는 전용 대기실이다.

삽입 완료

항목이 생겼으므로 notEmpty에 신호를 보낸다.

제거 완료

빈칸이 생겼으므로 notFull에 신호를 보낸다.

핵심: 같은 역할의 Condition에 신호하면 상태가 바뀌어도 필요한 작업자는 계속 잠든다.