【发布时间】:2016-04-10 07:52:26
【问题描述】:
我尝试通过编写以下代码自己重现 ConcurrentModificationException:
List<String> last = new ArrayList<>();
last.add("a");
last.add("b");
for(String i : last){
System.out.println(i);
last.remove(i);
}
System.out.println(last);
因为documentation of ArrayList mentioned
请注意,无法保证迭代器的快速失败行为 因为一般来说,不可能做出任何硬性保证 在存在不同步的并发修改的情况下。
我希望在单线程程序中这样的检测是直截了当的。但是程序打印出来了
a
[b]
相反。为什么?
【问题讨论】: