简介
读写锁。
- 内部持有读锁和写锁;
类图
字段
// 读锁
private final ReentrantReadWriteLock.ReadLock readerLock;
// 写锁
private final ReentrantReadWriteLock.WriteLock writerLock;
// 同步器
final Sync sync;
构造函数
- 默认创建非公平锁
public ReentrantReadWriteLock() {
this(false);
}
- 根据参数
fair
确定创建的锁是否公平;初始化读锁和写锁
public ReentrantReadWriteLock(boolean fair) {
sync = fair ? new FairSync() : new NonfairSync();
readerLock = new ReadLock(this);
writerLock = new WriteLock(this);
}
内部类
// 同步器
abstract static class Sync extends AbstractQueuedSynchronizer
// 公平锁
static final class FairSync extends Sync
// 非公平锁
static final class NonfairSync extends Sync
// 读锁
public static class ReadLock implements Lock, java.io.Serializable
// 写锁
public static class WriteLock implements Lock, java.io.Serializable
主要 API
获取读锁
public void lock() {
sync.acquire(1);
}
将获取锁(独占锁)的请求转发给AQS
处理(抽象队列同步器 AQS)
示例
测试
备注
使用JDK
版本为1.8