曾经使用信号量实现过第一类和第二类读写者问题,《java多线程设计模式》中使用notify()和wait()来实现,
在《Java核心技术》下册中,有ReentrantReadWriteLock类。
因为测试它发现一直是读者优先,然后阅读其源码,发现构造函数:
-
public ReentrantReadWriteLock(boolean fair) {
-
sync = (fair)? new FairSync() : new NonfairSync();
-
readerLock = new ReadLock(this);
-
writerLock = new WriteLock(this);
-
}
这里根据fair生成了不同的对象,分别是继承于同一个sync类的FairSync类和NonFairSync类。
本文探讨了ReentrantReadWriteLock的实现原理,特别是其构造函数如何根据参数选择公平或非公平模式,并创建对应的读锁和写锁。

209

被折叠的 条评论
为什么被折叠?



