并发修改异常简介
问题描述
当我们使用普通迭代器的同时,又往集合中添加元素,此时就会报:并发修改异常(ConcurrentModificationException)
细节:这个仅仅是产生并发修改异常的情况之一,还有其他情况。不再一一列举了,遇到再解决。这个是单线程
产生原因
当通过集合对象获取对应的普通迭代器对象的时候,迭代器内部有一个变量,记录的就是集合中的元素个数(即要迭代的次数),当集合长度改变时,与迭代器记录的次数不匹配,所以就报错
解决方案
方案一
采用列表迭代器解决(它内部没有判断迭代次数和集合元素个数否匹配这个判断,所以她可以解决并发修改异常)
细节:添加元素的时候,必须使用列表迭代器的添加方法, 且此元素是添加在当前元素之后的。
方案二
采用普通for解决,此方案添加的元素是在整个集合的最后
方案三
采用 CopyOnWriteArratList集合