timed tryLock의 acquired boolean은 unlock 조건까지 살아 있어야 한다

획득 실패와 업무 실패를 분리하고 미획득 경로에서 unlock하지 않습니다.

  1. 1

    acquired=false

    초기

  2. 2

    tryLock(timeout)

    획득 시 true

  3. 3

    false

    TIMEOUT 반환

  4. 4

    true

    업무 실행

  5. 5

    finally

    if acquired → unlock

핵심: timeout은 완료가 아니라 미수행 결과이므로 호출자에게 명시적으로 전달합니다.