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?