java.util.ConcurrentModificationException 记一次坑

本文深入解析了在单线程或多线程环境下,对集合进行同时添加和删除操作时出现的异常原因。阐述了集合长度变化时,迭代器大小不变导致的问题,并提供了四种避免异常的方法:确保同一进程或锁下操作、迭代中只执行一种操作、限制remove操作数量及使用迭代器remove。文章来源于https://www.cnblogs.com/verlout/p/9805934.html。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

集合在单线程,一个循环内,有添加又删除会出现此异常。

多线程时,在不同的循环操作同一个集合,会出现此异常。

因为,集合长度发生改变时,在迭代器未结束前,迭代器的大小不会发生变化。

1、保证在同一个进程 或 锁

2、保证迭代中只有一种操作

3、集合.remove() 每次迭代只能remove一个元素

4、迭代器.remove()要满足条件1、2

转载于:https://www.cnblogs.com/verlout/p/9805934.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值