一,综述
Lock接口定义了如下接口:
lock:获取当前锁
lockInterrupttibly:可中断的获取锁
tryLock:非阻塞状态获取锁
tryLock()带参数,超时获取锁,
unLock:释放锁
newCondition,后续详解.
Lock接口实现了synchronized不能实现的功能
- 非阻塞获取锁
- 超时获取锁
- 可中断获取锁
Lock接口如何使用:
private Lock lock = new ReentrantLock();
public void lockDemo() {
lock.lock();
try {
} finally {
lock.unlock();
}
}
lock方法不可写在try中,否则很容易发生异常导致不可释放锁.
二,锁的底层实现
Lock接口实现获取锁和释放锁是构建一个虚拟FIFO队列,并且设置一个成员变量来记录锁的状态,并且提三个方法,来修改这个变量,
使用者继承该类,并调用上述方法,来修改线程状态.
: