public static void main(String[] args) {
//创建一个集合容器,使用Collection接口方法。
ArrayList al=new ArrayList();
//添加元素
al.add("abxd1");
al.add("abxd2");
al.add("abxd3");
//在迭代过程中,添加或删除元素
for( Iterator it=al.iterator();it.hasNext();){
Object obj=it.next();
if(obj.equals("abxd1")){
al.add("asdasd");//并发访问
}
}
}结果:引发了java.util.ConcurrentModificationException。当方法检测到对象的并发修改,但不允许这种修改时,抛出此异常。这是什么意思呢,当集合添加元素的时候,集合获得了元素的引用,那么集合就可以对元素进行操作,当执行到Iterator it=al.iterator()这条语句的时候,元素的引用就被取到了迭代器里面。现在操作元素的方法就有两种了,要么用集合的方法要么用迭代器的方法。这两种方法操纵的是同一组元素。当使用迭代器的方法操作元素时,同时用集合的方法操作用一组元素,就有可能引起安全隐患。
|
|