admin管理员组

文章数量:1599744

之前总结了wait和notify的用法,今天总结一下condition的用法。

Condition介绍:

关键字synchronize可以与wait()和nitify()方法相结合实现实现等待/通知模式,类ReentrantLock也可以实现同样的功能,但需要借助condition对象。condition类是在JDK5中出现的技术,使用他有更好的灵活性,比如可以实现多路通知功能,也就是在一个Lock对象里可以创建多个condition实例,线程对象可以注册在指定的condition中从而选择性的进行线程通知,在调度线程上更加灵活。

在使用notify()/notifuAll()方法进行通知时,被调度的线程却是由JVM随机选择的。但使用ReentrantLock结合condition类是可以实现上面讲的“选择性通知”,这个功能是非常重要的,而且在condition类中默认提供的。

synchronize就相当于整个Lock对象中只有一个单一的condition对象,所有的线程都注册在它一个对象上。线程开始notifyAll()时,需要通知所有的WAITING线程,没有选择权,会出现相当大的效率问题。

  • Condition是个接口,基本的方法就是await()和signal()方法

  • Condition依赖于Lock接口,生成一个Con

本文标签: 多线程condition