据说,这ReentrantReadWriteLock
是为一位作家和多位读者准备的。
然而,读者应该等到缓冲区中存在一些数据。
那么,要锁定什么?
我创建了如下并发对象:
private final ReentrantReadWriteLock rwl = new ReentrantReadWriteLock();
protected final Lock readLock = rwl.readLock();
protected final Lock writeLock = rwl.writeLock();
protected final Condition hasData = writeLock.newCondition();
现在在写方法我做:
writeLock.lock();
// writing first portion and updating variables
hasData.signalAll();
// if required then writing second portion and updating variables
hasData.signalAll();
但是如何写一个读者呢?它应该只获取readLock
吗?但它怎么能等待信号呢?如果它还需要一个writeLock
,那么读/写锁定的至高无上的地位在哪里?
如果它们仅受保护,如何确保所需的变量在读取期间不会改变writeLock
?
队列与任务不匹配
这是关于ReentrantReadWriteLock
.