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()等方法来取代之前的方法使用,效果是一样的。


猜你喜欢

转载自blog.csdn.net/CHEN_zB/article/details/80950716