java线程通信-使用lock和condition接口

 java线程通信我们一开始是使用synichronized同步锁和Object类的wair,notify,notifyAll方法实现线程的通信

大概使用: (举例)我们在一个共享资源类里,在一个方法上加上synchronized同步锁,同时利用监听锁对象来调用wait和

notifyAll方法 来通过实现线程通信的要求。


(注:上图的this.notifyAll()是唤醒等待池的所有线程,唤醒单个的是notify)

从java5开始,我们可以使用 Lock机制取代synichronized代码块和synchronized方法;

                        可以使用condition接口对象的await,signal,signalAll方法来取代Object类中的wait,notify,notifyAll方法

通过API文档我们可以得知:



通过lock对象调用newCondition()方法返回一个condition对象来调用以上的方法。


所以代码可以改为


由于同步监听对象没有了之后我们不可以在通过同步监听对象调用wait()等方法,所以这时候lock机制提供了newCondition()方法来获取condition对象来调用await()等方法来取代之前的方法使用,效果是一样的。


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值