为什么CopyOnWriteArrayList使用额外的内存进行设置,添加操作

时间:2017-07-19 05:13:58

标签: java multithreading concurrency java.util.concurrent

根据我对CopyOnWriteArrayList中更新数据的理解。使用ReentrantLock锁定set方法,将数据复制到局部变量中,将要添加的数据添加到此局部变量中,然后将其更新为整个List数据。在Vector和synchronizedList的set方法的同步版本上执行此操作是否有任何优势

1 个答案:

答案 0 :(得分:1)

  

Clients.CurrentVector

的set方法的同步版本执行此操作是否有任何优势?

例如,您不能在一个线程中迭代synchronizedList并在另一个线程中修改它。你会得到一个synchronizedListConcurrentModificationException永远不会发生这种情况, 因为迭代器的基础数据结构从不修改。

Javadoc中的描述清楚地说明了好处和缺点。