【问题标题】:Why CopyOnWriteArrayList use ReentrantLock but ReentrantReadWriteLock?为什么 CopyOnWriteArrayList 使用 ReentrantLock 而使用 ReentrantReadWriteLock?
【发布时间】:2021-12-20 02:06:57
【问题描述】:

这是添加元素的代码,为什么不用ReentrantReadWriteLock而是用ReentrantLock

 public boolean add(E e) {
        final ReentrantLock lock = this.lock;
        lock.lock();
        try {
               //add element 
        } finally {
            lock.unlock();
        }
}

【问题讨论】:

  • 为什么需要读/写锁,这个比较复杂?为什么要打扰?

标签: java copyonwritearraylist


【解决方案1】:

CopyOnWriteArrayList 实现的重点在于读取操作根本不进行任何锁定。

所以由于只有写操作需要加锁,而且都需要获取排他锁,所以这里使用ReentrantLock类更简单高效。

【讨论】:

  • 听了你的讲解,看到了Lock接口和ReadWriteLock接口,我明白了它们的区别。感谢您的帮助。美好的一天
猜你喜欢
  • 1970-01-01
  • 2012-08-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多