ConcurrentModificationException问

2020-03-01  本文已影响0人  我是光芒万丈

结论:此问题:出现此问题说明多个线程同时操作一个Linkedlist,或单线程下使用list的remove等方法且没有更新迭代器中的expectedModCount

解决:单线程下如存在renmove调用,应改为使用迭代器remove;

      多线程下应改用相关多线安全集合。

源码分析:

list内部iterator初始化时,会把list中的modcount赋给expectedModCount

1

而当遍历时其他线程或本线程调用list相关方法操作了该集合,list中modcount会每次自增1

2

而而iterator.next会先对两个值进行比对,如果不相等,从而该异常

3
上一篇 下一篇

猜你喜欢

热点阅读