一、ReentrantLock
可重入锁
1、继承关系
public class ReentrantLock implements Lock, java.io.Serializable
ReentrantLock本身没有继承AQS,而是实现了Lock接口,所以使用时用reentrantLock.lock()方法来获取锁
public void lock() {
sync.lock();
}
内部类Sync继承了AQS,ReentrantLock使用了Sync。
在ReentrantLock的构造方法中,可以选择使用公平锁还是非公平锁,默认是非公平锁
二、ReentrantReadWriteLock
1、继承关系
public class ReentrantReadWriteLock implements ReadWriteLock, java.io.Serializable
ReadWriteLock并没有继承自Lock
五个内部类,由ReentrantReadWriteLock组合
构造函数也是默认非公平锁
2、使用计数器来记录读锁的个数