使用Lock 和 condition 取代了 之前的 synchronized(obj) 以及 obj.wait()、obj.notify()、obj.notifyAll()
而且使用lock可以 建立多个condition 监视器
首先要导入带有lock方法的包
import java.util.concurrent.locks
建立一个锁
Lock lock=new ReentrantLock();
lock.lock(); //获取锁
lock.unlock(); //释放锁,通常需要定义finally代码,这样可以保证 即使代码出现错误中断 还是会释放锁 ,不会造成死锁情况。
建立lock的两个监视器
Condition con1=lock.newCondition();
Condition con2=lock.newCondition();
con1.await(); //等待
con1.signal();//释放一个线程
con1.signalAll();//释放所有线程
Lock接口: 出现替代了同步代码块和同步函数。将同步的隐式锁变成现实锁操作
同时更为灵活,可以一个锁上加入多组监视器
Condition接口: 出现替代了object 中的wait、notify、notifyAll方法
将这些监视器方法单独进行了封装,变成Condition监视器对象,可以任意锁进行组合。