notify와 notifyAll은 생존성과 깨우기 비용을 교환한다

notify는 하나만 깨워 효율적이지만 역할을 고를 수 없고 notifyAll은 모두 깨운 뒤 조건으로 거릅니다.

notify

1명 깨움 · 잘못된 역할 가능

notifyAll

모두 깨움 · 생존성 우선 · 재경쟁

Condition.signal

역할별 wait set에서 선택 가능

핵심: 여러 predicate가 같은 wait set에 섞이면 전체 알림이 더 안전한 기본값입니다.