This question already has answers here:
In what situations is the CopyOnWriteArrayList suitable? [duplicate]
                                
                                    (2个答案)
                                
                        
                2年前关闭。
            
        

我找不到关于何时适用于CopyOnWriteArrayList的任何解释,我的意思是在什么情况下容器最适合。

有一个标题相同的问题,In what situations is the CopyOnWriteArrayList suitable?。但是,它已关闭,因为它与其他问题线程重复。我认为两个线程都没有回答问题,所以我启动了这个问题线程。

对于In what situations is the CopyOnWriteArrayList suitable?,它实际上表明CopyOnWriteArrayList


  如果您有一个列表,其中迭代次数超过突变,则非常有效


但是我没有找到实际的应用场景。对于How can CopyOnWriteArrayList be thread-safe?,它实际上着重于CompyOnWriteArrayList为什么线程安全的原因。

感谢您的提前答复。

最佳答案

基于javadoc,


  java.util.ArrayList的线程安全变体,其中所有变量都是
  操作(添加,设置等)通过重新制作来实现
  基础数组的副本。


如您所见,对容器的任何修改都是昂贵的,尤其是当容器中的数据量很大时。

修改频率较低时,最好使用CopyOnWriteArrayList。正如JCIP所建议的那样,


  写时复制集合仅在以下情况下才合理使用:
  迭代比修改要普遍得多。


例如事件通知系统。每当需要通知事件时,它都会迭代容器,但只有在更改观察者时才进行修改。前者的发生频率较高,而后者的发生频率较低。

10-07 16:01