一、Lock的一般用法
Lock l = ...;
l.lock();
try {
// access the resource protected by this lock
} finally {
l.unlock();
}
二、Lock中的方法
- lock():获取锁
- unlock():释放锁
- newCondition():返回一个绑定到这个锁对象实例的一个Condition实例
- tryLock():仅当锁未被其他线程占有时才能获取到并返回true,否则返回false
- lockInterruptibly():获取锁并且能在获取锁时被打断
三、ReentrantLock中的属性
- serialVersionUID:序列号
- sync:内部类Sync的引用,提供了所有方法的实现机制
四、ReentrantLock中的三个内部类
- Sync:抽象类,其中的lock方法需要子类去实现,其两个子类如下‘
- FairSync
- NonfairSync
五、ReentrantLock中的方法
- ReentrantLock():默认构造方法中将一个NonfairSync对象传给sync引用
- lock():获取锁
- unlock():释放锁
- newCondition():获取Condition对象,用法和Object类中的wait、notify等相同
- tryLock():立即获取锁或等待一定时间后放弃