一般都会将Condition对象作为成员变量。下面通过一个有界队列的示例来深入了解Condition的使用方式。当数组数量等于数组长度时,表示数组已满,则调用notFull.await(),当前线程随之释放锁并进入等待状态。在添加和删除方法中使用while循环而非if判断,目的是防止过早或意外的通知,只有条件符合才能够退出循环。回想之前提到的等待/通知的经典范式,二者是非常类似的ConditionObject是同步器AbstractQueuedSynchronizer的内部类,因为Condition的操作需要获取相关联的锁,所以作为同步器的内部类也较为合理。每个Condition对象都包含着一个队列,该队列是Condition对象实现等待/通知功能的关键。当节点移动到同步队列后,当前线程再使用LockSupport唤醒该节点的线程。

Java多线程Condition接口原理介绍

Java多线程Condition接口原理介绍

Java多线程Condition接口原理介绍

Java多线程Condition接口原理介绍

Java多线程Condition接口原理介绍

Java多线程Condition接口原理介绍

Java多线程Condition接口原理介绍