什么是并发修改异常:通俗的来讲就是在迭代器迭代的过程中使用集合的方法修改数据,比如add或者remove方法。就会导致此异常的产生。
接下来看以下两个简单的例子:
数组中:
源码:
//新建一个数组 int[] arr={1,2,3}; for (int i : arr) { System.out.print(i+" "); }
编译后
int[] arr = new int[]{1, 2, 3}; int[] var2 = arr; int var3 = arr.length; for(int var4 = 0; var4 < var3; ++var4) { int i = var2[var4]; System.out.print("" + i + " "); }
集合中:
源码:
List list=new ArrayList(); for (Object o : list) { System.out.println(o); }
编译后:
List list = new ArrayList(); Iterator var7 = list.iterator(); while(var7.hasNext()) { Object o = var7.next(); System.out.println(o); }
总结:从上面编译的结果很容易分析出数组中使用的是普通for循环,而集合使用的是迭代器。所以数组中不会产生并发修改异常。