timed tryLock의 acquired boolean 수명

false와 exception 경로에서 소유하지 않은 unlock을 막는다.

  1. 초기화

    acquired false

    not owner
  2. 시간 시도

    tryLock 반환값을 저장한다

    decision
  3. 임계 영역

    true일 때만 state를 commit한다

    owned
  4. finally

    acquired true일 때만 unlock한다

    safe release

핵심: 무조건 unlock하면 IllegalMonitorStateException이 원래 outcome을 가린다.