曾经使用信号量实现过第一类和第二类读写者问题,《java多线程设计模式》中使用notify()和wait()来实现,
在《Java核心技术》下册中,有ReentrantReadWriteLock类。
因为测试它发现一直是读者优先,然后阅读其源码,发现构造函数:
-
public ReentrantReadWriteLock(boolean fair) {
-
sync = (fair)? new FairSync() : new NonfairSync();
-
readerLock = new ReadLock(this);
-
writerLock = new WriteLock(this);
-
}
<script language=javascript> function CopyCode(key){var codeElement=null;var trElements=document.all.tags("ol");var i;for(i=0;i <script language=javascript> function CopyCode(key){var codeElement=null;var trElements=document.all.tags("ol");var i;for(i=0;i
这里根据fair生成了不同的对象,分别是继承于同一个sync类的FairSync类和NonFairSync类。