Java:具有优先级的ReentrantReadWriteLock

前端之家收集整理的这篇文章主要介绍了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();
       }
  }

我想知道是否有可能优先考虑作家和读者?例如,通常编写者可能会等待很长时间(可能永远),如果其他线程持有读取锁定,那么是否可以让编写器具有更高的优先级,因此每当编写器出现时,它都可以被认为是正如高优先级(跳过线)类似的东西.

最佳答案
根据javadoc,jdk实现没有任何读写器优先级.但是,如果你使用“公平”实现,那么锁是以fifo顺序授予的(仍然没有读者/作者偏好),所以至少未来的读者不会阻止等待的编写者.

猜你在找的Java相关文章