当前位置:  开发笔记 > 编程语言 > 正文

检测并发修改?

如何解决《检测并发修改?》经验,为你挑选了1个好方法。

在我正在研究的多线程应用程序中,我们偶尔会看到ConcurrentModificationExceptions我们的列表(大多数情况下ArrayList,有时候是矢量).但是还有一些时候我认为并发修改正在发生,因为遍历集合似乎缺少项目,但没有抛出异常.我知道文档ConcurrentModificationException说你不能依赖它,但我怎样才能确保我不会同时修改List?并且在同步块中包装对集合的每个访问权限是防止它的唯一方法吗?

更新:是的,我知道Collections.synchronizedCollection,但它并没有防止有人在你迭代它时修改集合.我认为至少有一些问题发生在我正在迭代它时有人向集合添加内容时.

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



1> Javamann..:

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

推荐阅读
mylvfamily
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有