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