1. 管理状态依赖
可阻塞的状态依赖操作。
void blockingAction() throws InterruptedException() {
acquire lock on object state
while (precondition does not hold) {
release lock
wait until precondition might hold
optionally fail if interrupted or timeout expires
reacquire lock
}
perform action
}