Lock&Condition

java5条件阻塞Condition的应用

眉间皱痕 提交于 2020-03-02 10:49:45
一、概述 1、在等待 Condition 时,允许发生“虚假唤醒”,这通常作为对基础平台语义的让步。对于大多数应用程序,这带来的实际影响很小,因为 Condition 应该总是在一个循环中被等待,并测试正被等待的状态声明。某个实现可以随意移除可能的虚假唤醒,但建议应用程序程序员总是假定这些虚假唤醒可能发生,因此总是在一个循环中等待。 2、一个锁内部可以有多个Condition,即有多路等待和通知,可以参看jdk1.5提供的Lock与Condition实现的可阻塞队列的应用案例,从中除了要体味算法,还要体味面向对象的封装。在传统的线程机制中一个监视器对象上只能有一路等待和通知,要想实现多路等待和通知,必须嵌套使用多个同步监视器对象。( 如果只用一个Condition,两个放的都在等,一旦一个放的进去了,那么它通知可能会导致另一个放接着往下走。 ) 二、代码描述 1、ConditionCommunication.java 将传统wait()和notify() 改写成Condition方式,需要Lock配合使用。 /** * @Title: TraditionalThreadCommunication.java * @Package com.lh.threadtest.t4 * @Description: TODO * @author Liu * @date 2018年1月15日 下午9