以下是典型的讀寫器模式(大量的讀取和寫入數)的Java:的ReentrantReadWriteLock優先
private ReadWriteLock lock = new ReentrantReadWriteLock();
private int value;
public void writeValue(int newValue){
lock.writeLock().lock();
try{
this.value = newValue;
}
finally{
lock.writeLock().unlock();
}
}
public int readValue(){
lock.readLock().lock();
try{
return value;
}
finally{
lock.writeLock().unlock();
}
}
我想知道這是有可能有優先作家和讀者?例如,通常作家可能會等待很長時間(也許是永遠),如果有其他線程持續讀取鎖定,那麼是否有可能讓作者具有更高的優先級,所以每當作家來到時,它可以被認爲是高優先級(跳過)類似的東西。
您認爲此時還需要其他額外的併發收集嗎?像BlockingQueue?或併發PriortyQueue類似的東西? – peter 2012-08-12 19:25:58
@ user1389813 - 是否爲您的需求提供足夠強有力的保證?考慮到讀者(在你的例子中)只是閱讀一個簡單的價值,我無法想象一個作家會被阻止等待現有讀者(可以同時進行)。 – jtahlborn 2012-08-12 19:34:53
那麼你有什麼建議? – peter 2012-08-12 19:37:05