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

CopyOnWriteArrayList和syncedList之间的区别

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

CopyOnWriteArrayList和syncedList之间的区别

对于写入(添加)操作,CopyOnWriteArrayList使用ReentrantLock并创建数据的备份副本,并且仅通过setArray更新基础的易失性数组引用(在setArray之前的列表上的任何读取操作都将在添加之前返回旧数据)。
CopyOnWriteArrayList提供快照故障安全迭代器,并且在写入/添加操作时不会引发ConcurrentModifficationException。

但是,当我检查CopyOnWriteArrayList.class的add方法时,我们正在获取对完整集合对象的锁定。那么,CopyOnWriteArrayList为何比syncedList更好。我在CopyOnWriteArrayList的add方法中看到的唯一区别是,每次调用add方法时,我们都在创建该数组的副本。

  1. 不,锁不是在整个Collection对象上。如上所述,它是一个ReentrantLock,它与内部对象锁不同。
  2. add方法将始终创建现有数组的副本,并对副本进行修改,然后最终更新该数组的volatile引用以指向此新数组。这就是为什么我们使用“ CopyOnWriteArrayList”这个名称的原因-在您写入时创建副本。这也避免了ConcurrentModificationException


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

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

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