您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

在什么情况下,CopyOnWriteArrayList是合适的?[重复]

在什么情况下,CopyOnWriteArrayList是合适的?[重复]

如该链接所述

CopyOnWriteArrayList是Java 5并发API中引入的并发Collection类,以及它ConcurrentHashMap在Java中流行的表亲。

CopyOnWriteArrayList工具列表界面类似ArrayListVector并且LinkedList但它的一个线程安全的集合,它实现了线程安全比Vector或其他线程安全的集合类的方式略有不同。

顾名思义,CopyOnWriteArrayList会在每次更改操作(例如添加或设置)时创建基础ArrayList的副本。通常,CopyOnWriteArrayList非常昂贵,因为它涉及每次写操作的昂贵的Array复制,但是 例如,您最需要迭代ArrayList且不要经常修改它。

即使迭代开始后修改了基础CopyOnWriteArrayList 是因为Iterator在ArrayList的单独副本上进行操作。因此,在CopyOnWriteArrayList上进行的所有更新都不适用于Iterator。

要获得最新版本,请重新读一遍类似 list.iterator();

话虽这么说,大量更新此集合会降低性能。如果您尝试对a进行排序CopyOnWriteArrayList,则会看到该列表抛出一个UnsupportedOperationException(对集合调用N次设置的排序调用)。仅当您进行超过90%以上的读取时,才应使用此读取。

其他 2022/1/1 18:16:53 有609人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶