실행 구간
공유 필드와 조건 술어를 ReentrantLock이 보호한다.
await는 연결된 락을 잠시 놓지만 반환할 때 다시 소유한 상태다.
공유 필드와 조건 술어를 ReentrantLock이 보호한다.
상태 전이 직후 같은 락을 가진 채 signal을 호출한다.
await가 대기실 등록과 락 반납을 하나로 처리한다.
신호 뒤 락을 다시 얻어야 await 다음 줄로 진행한다.
핵심: Condition 객체는 자신을 만든 락과 분리해서 사용할 수 없다.