gpt4 book ai didi

java - 检测并发修改?

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:30:52 25 4
gpt4 key购买 nike

在我正在处理的多线程应用程序中,我们偶尔会在我们的列表(主要是 ArrayList,有时是 Vectors)上看到 ConcurrentModificationExceptions。但也有其他时候我认为并发修改正在发生,因为遍历集合似乎缺少项目,但没有抛出异常。我知道 ConcurrentModificationException 的文档说您不能依赖它,但我将如何确保我没有同时修改列表?将对集合的每次访问都包装在一个同步块(synchronized block)中是防止它发生的唯一方法吗?

更新:是的,我知道 Collections.synchronizedCollection,但它不能防止有人在您循环访问集合时修改集合。我认为,当有人在我遍历集合时向集合中添加内容时,至少会出现一些问题。

第二次更新 如果有人想像 Jason 一样提到 synchronizedCollection 和克隆,同时提到 java.util.concurrent 和 apache 集合框架,如 jacekfoo 和 Javamann,我可以接受一个答案。

最佳答案

根据您的更新频率,我最喜欢的一个是 CopyOnWriteArrayList 或 CopyOnWriteArraySet。他们创建一个新的更新列表/集合以避免并发修改异常。

关于java - 检测并发修改?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75014/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com