CopyOnWriteArrayList实现问题

根据CopyOnWritearrayList javadoc:

ArrayList一个线程安全变体,其中所有可变操作(add,set等)都通过创建底层数组的新副本来实现

但是我想知道为什么它每次都在制作新副本,因为它是在独占锁中执行此操作。


即使列表锁定在可变操作上,仍然可以获取Iterator并循环集合,但不同步。 这些可变操作创建的新副本将不会被迭代器看到。 这允许其他线程从列表中读取,而不必担心由于列表的修改而导致的异常,如Javadocs中所述:

“快照”样式迭代器方法在创建迭代器时使用对数组状态的引用。 这个数组在迭代器的生命周期内永远不会改变,所以干扰是不可能的,迭代器保证不会抛出ConcurrentModificationException

链接地址: http://www.djcxy.com/p/76113.html

上一篇: CopyOnWriteArrayList implementation concern

下一篇: Is there an alternative to CopyOnWriteArrayList which can be sorted?