ReentrantLock 임계 영역은 획득·검증·변경·signal·해제로 닫힌다

Condition을 사용해도 공유 상태 불변식과 finally unlock 책임은 그대로입니다.

  1. 1

    lock

    owner 획득

  2. 2

    while predicate false

    await

  3. 3

    reacquire

    조건 재검사

  4. 4

    state commit

    불변식 유지

  5. 5

    signal

    상대 Condition

  6. 6

    finally unlock

    항상 해제

핵심: 상태를 바꾼 뒤 해당 predicate를 기다리는 Condition에 신호를 보냅니다.