java.util.ConcurrentModificationException处理

出现场景

  • 使用list容器时,在循环遍历中add或remove元素
  • 使用set容器时,在循环遍历中add或remove元素
  • 使用map容器时,在循环遍历中remove元素

错误原因

  • remove操作时,只有modCount++,而expectedCount值未变,迭代器在取下一个元素的时候,发现该二值不等,则抛ConcurrentModificationException异常。
  • add操作同理

解决办法

list/set容器

  • 采用迭代方法循环遍历,remove操作使用iterator提供的原生态remove()方法
  • add操作用新的容器暂存,然后在遍历结束后,全部添加到原容器当中。

map 容器

  • 使用ConcurrentHashMap

参考

posted @ 2022-02-18 15:02  zjcfrancis  阅读(18)  评论(0编辑  收藏  举报