ConcurrentModificationException报错解决方案
1、既然大家都是点进来解决问题的,那么我首先先说下最便捷的解决方案吧,无论您是多线程报错,还是for循环中删除报错,只需用CopyOnWriteArrayList来替换普通的ArrayList,那就一定不会报错了。如下图所示:

3、问题想必各位都已经解决了,接下来我再继续补充一下fail-fast产生错误的原因。需要注意的是,fail-fast只是一个错误检测机制,并不代表有错误一定会触发这个机制。

5、那么modCount在什么时候会产生变化痒滕熘丬呢,正如我前面说的,这个是为了保持长度一致性所以才建立的,因此飧肇苡卫只要list的长度发生变化了,这个值就会发生变化,也就是当你已经构建完毕iterator的时候,如果在其他线程增删,恰好异步到这个位置,或者说你根本没有使用iterator的删除函数,而是直接采用了list自带的remove就会产生这样子的结果。

6、相信细心的读者已经看出来了,这个监测只监测长度,因此只要在next被执行之前,也就是判断这两个值是否相等之前,不管发生了什么变动,只要保证开始next的时候这个arraylist长度不变,那么就不会报错。因此这个检测并不能排错,只是错误的预警而已。
声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
阅读量:24
阅读量:84
阅读量:78
阅读量:91
阅读量:78