栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

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

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

如该链接所述:

CopyOnWriteArrayList是Java
5并发API中引入的并发Collection类,以及它

ConcurrentHashMap
在Java中流行的表亲。

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

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

CopyOnWriteArrayList的迭代器是故障安全的, 即使迭代开始后修改了基础CopyOnWriteArrayList
,也不会引发ConcurrentModificationException,这
是因为Iterator在ArrayList的单独副本上进行操作。因此,在CopyOnWriteArrayList上进行的所有更新都不适用于Iterator。

要获得最新版本,请重新读一遍类似

list.iterator();

话虽这么说,大量更新此集合会降低性能。如果您尝试对a进行排序

CopyOnWriteArrayList
,则会看到该列表抛出一个
UnsupportedOperationException
(对集合调用N次设置的排序调用)。仅当您进行超过90%以上的读取时,才应使用此读取。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/427830.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号