实战:通过腾讯的 bugly 反馈的问题

崩溃修改:ConcurrentModificationException 实战

解决 Kwai-pro 的bug,因为如果每次都是通过 .getMessage() 方法获取,有可能有别的线程在操作该数据集,导致 ConcurrentModificationException 的出现

崩溃修改:ConcurrentModificationException 实战

解决方案:

该异常表示迭代器迭代过程中,迭代的对象发生了改变,如数据项增加或删除。

[解决方案]:
由于迭代对象不是线程安全,在迭代的过程中,会检查 modCount 是否和初始 modCount 即 expectedModCount 一致,如果不一致,则认为数据有变化,迭代终止并抛出异常。常出现的场景是,两个线程同时对集合进行操作,线程1对集合进行遍历,而线程2对集合进行增加、删除操作,此时将会发生 ConcurrentModificationException 异常。

具体方法:多线程访问时要增加同步锁,或者建议使用线程安全的集合:

  • 1、使用 ConcurrentHashMap 替换 HashMap,CopyOnWriteArrayList 替换 ArrayList
  • 2、或者使用使用 Vector 替换 ArrayList,Vector 是线程安全的。Vector 的缺点:大量数据操作时,由于线程安全,性能比 ArrayList 低

——乐于分享,共同进步,欢迎补充
——Any comments greatly appreciated
——诚心欢迎各位交流讨论!QQ:1138517609
——CSDN:https://blog.csdn.net/u011489043
——简书:https://www.jianshu.com/u/4968682d58d1
——GitHub:https://github.com/selfconzrr

相关文章:

  • 2021-10-09
  • 2023-01-31
  • 1970-01-01
  • 2021-05-05
  • 2022-01-11
  • 2021-04-19
  • 2022-01-07
  • 2021-11-06
猜你喜欢
  • 2022-03-04
  • 2021-06-22
  • 2022-12-23
  • 2022-12-23
  • 2021-12-12
  • 2021-07-20
相关资源
相似解决方案