线程的Lock锁

虽然我们可以理解同步代码块和同步方法的锁对象问题,但是我们并没有直接看到哪里加上了锁,在哪里释放了锁,为了更清晰的表达如何加锁和释放锁, JDK5以后提供了一个新的锁对象Lock

Lock是接口,该接口在java.util.concurrent.locks包下

该接口实现提供了比使用synchronized方法和语句可以获得的更广泛的锁定操作,该接口提供了两个方法,如下

方法作用
lock()获得锁
unlock()释放锁

Lock是一个接口,不能直接实例化即不能直接创建对象,需要通过Lock接口的实现类,Lock的实现类如下: ReentrantLock、ReentrantReadWriteLock.ReadLock、ReentrantReadWriteLock.WriteLock

我们一般使用ReentrantLock来实例化,ReentrantLock类的无参构造方法:ReentrantLock() 创建一个ReentrantLock的实例

 

线程Lock锁的练习