ReentrantLock의 안전한 lexical 사용 순서

획득과 finally 해제를 같은 method 안에 가까이 둔다.

  1. lock 호출

    owner가 될 때까지 기다린다

    acquire
  2. try 진입

    보호 state를 검증·변경한다

    critical
  3. return·exception

    모든 경로가 finally로 이동한다

    control
  4. unlock

    현재 owner가 hold를 반납한다

    release

핵심: lock 획득 전에 try를 열거나 성공 여부 없이 finally unlock을 호출하지 않는다.