我正在使用Iterator处理一段代码,并在我从
Windows上的IDE运行程序时在第a行获取ConcurrentModificationException–
LinkedList ll =new LinkedList(); . . . . . . Iterator iter = ll.iterator(); int i=0; while (iter.hasNext()) { // GrammarSection agrammarSection = (GrammarSection) iter.next(); //a String s1 = (String) iter.next(); ll.remove(i); i++; }
这是预期的,因为我在迭代时修改列表,因此失败快速迭代器抛出一个Concurrentmodification异常.但是,当我在unix中使用apache服务器运行此代码时,迭代器的下一个方法不会抛出任何异常.那么,并发修改异常是否依赖于操作系统级别?
解决方法
不,它不应该.无论如何它应该崩溃.
我想在不同的JVM上可能会有所不同,但根据official spec,链表上的迭代器应该是快速失败的.
操作系统与它无关.