看看下面的代码:

















当你运行这段代码的时候,你就会领略到这段代码的有趣之处了。程序是这样测试的:
1.建立一个ArrayList
2..添加两个字符串。
3.用一个循环将ArrayList中的东西打印出来,问题就在循环体内。在第一次循环的时候,我往容器中添加了一个字符串。结果在第二次循环的是时候,它就判断出,容器里字符串的个数变化了。
再看下面的一个程序













这段程序代码使用了迭代器。结果回返回异常:




原因:
JAVA容器有一个机制(FAIL FAST),可以防止多个进程修改同一个容器的内容。如果你正在走访某个容器,另一个进程却要进行元素的安插、删除、修改等动作,便会发生问题。JAVA容器会查找“因你的进程而做的任何改变”之外的所有容器变化。如果它侦测到其他进程也在修改同一个容器,就会立刻产生一个java.util.ConcurrentModificationException。然而当你运用GET()来访问List的元素时,无法从此类监看动作中得到好处。