【发布时间】:2014-12-14 22:46:43
【问题描述】:
我有问题。第一个是为什么当我们运行这个函数时会出现 ConcurrentModificationException ?
public static void testList() {
List<String> list = new ArrayList<String>();
list.add("str3");
for (String st : list) {
if (st.equalsIgnoreCase("str3")) {
list.remove("str3");
}
}
System.out.println(list);
}
我的事情,因为增强了使用迭代器(检查modificationsCount),但我要求确定。这就是异常的原因吗?
第二个问题是如果我使用Collections.synchronizedList(new LinkedList<Something>());
我可以使用 2 个或更多增强的 for 循环吗?例如,我必须线程,有时第一个从集合中删除元素,有时第二个在集合中添加元素。我认为即使我们使用迭代器也应该是线程保存(我认为使用迭代器进行了增强)。
提前致谢。
【问题讨论】:
标签: java multithreading collections synchronization