image.png

    • Owner线程发现条件不满足,调用wait方法,即可进入WaitSet变为【WAITING】状态
    • WaitSet与EntryList有区别,不要混淆,WaitSet中是曾经占有锁而因为条件没满足释放锁的线程队列,EntryList是等待锁的队列
    • 【BLOCKED】和【WAITING】的线程都处于阻塞状态,不占用CPU时间片
    • 【BLOCKED】线程会在Owner线程释放时唤醒
    • 【WAITING】线程会在Owner线程调用notify或notifyAll时唤醒,但唤醒后并不意味着立刻获得锁,仍需进入EntryList重新竞争