关于何时适用于CopyOnWriteArrayList,我找不到任何解释,我的意思是容器最适合的情况。
有一个同名的问题In what situations is the CopyOnWriteArrayList suitable?。但是,它已关闭,因为它与其他问题线程重复。我认为两个线程都没有回答这个问题,所以我发起了这个问题线程。
对于In what situations is the CopyOnWriteArrayList suitable?,它实际上表明CopyOnWriteArrayList
是
如果你有一个迭代次数超过变异的列表,那么非常有效
但我没有找到实际的应用场景。对于How can CopyOnWriteArrayList be thread-safe?,它实际上关注的是CompyOnWriteArrayList是线程安全的原因。
提前感谢您的回答。
答案 0 :(得分:3)
基于javadoc,
java.util.ArrayList的线程安全变体,其中所有变量都是 操作(添加,设置等)通过重新实现来实现 基础数组的副本。
正如您所看到的,对容器的任何修改都是昂贵的,尤其是当容器中的数据大小很大时。
当修改频率较低时,最好使用CopyOnWriteArrayList
。正如 JCIP 所建议的那样,
写时复制集合仅在使用时才合理使用 迭代比修改更常见。
例如事件通知系统。每次需要通知事件时它都将迭代容器,但只有在更改观察者时才会修改。前者的出现频率较高,后者的频率较低。