多线程——Condition的介绍以及用法

本文介绍了Java中Condition接口的使用,包括Condition的概念、等待/通知模式的实现、如何选择性通知线程,以及Condition在ReentrantLock中的作用。通过示例代码展示了Condition如何替代synchronized的wait()和notify(),并分析了await()、signal()和signalAll()的内部机制,阐述了它们在多线程通信中的重要性。
摘要由CSDN通过智能技术生成

之前总结了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

  • 1
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值