加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

Java:具有优先级的ReentrantReadWriteLock

发布时间:2020-12-14 19:20:40 所属栏目:Java 来源:网络整理
导读:以下是典型的读写器模式(大量读取和少量写入) private ReadWriteLock lock = new ReentrantReadWriteLock(); private int value; public void writeValue(int newValue){ lock.writeLock().lock(); try{ this.value = newValue; } finally{ lock.writeLock()

以下是典型的读写器模式(大量读取和少量写入)

  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顺序授予的(仍然没有读者/作者偏好),所以至少未来的读者不会阻止等待的编写者.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读