线程二十一:条件

条件Condition接口可以简单的理解为是wait和notify的升级版,通过与Lock的使用结合起来,能完成在对象上创建多重等待集合的功能。使用Lock的newCondition方法可以获取一个针对特定Lock实例的Condition对象。

Condition声明了如下的重要方法来实现其功能:1.await方法在接收到唤醒信号之前会一直等待(可以被中断)。2.await(long time,TimeUnit unit)方法指定了等待时间,其他功能同上一个方法。3.awaitUninterruptibly( )在接收到唤醒信号之前一直等待。4.signal方法用来唤醒一个等待中的线程。5.signalAll方法用来唤醒所有等待中的线程。Condition接口下的其它方法请大家参考java doc文档,这里就不一一列举了。

例子描述了一个经典的生产者-消费者的实例,采用了Lock和Condition来代替前面的synchronized组合wait-notify,效果一样能满足生产者-消费者的要求。

参考链接

猜你喜欢

转载自blog.csdn.net/qq_34479912/article/details/82845584