java.util.ConcurrentModificationException 并发修改异常处理
来源:互联网 发布:java逻辑 编辑:程序博客网 时间:2024/05/22 01:55
项目代码
//先根据商户编码获取活动list
Exampleexample=new Example(TPromoActivity.class);
example.createCriteria().andEqualTo("systemMercCode",systemMercCode)
.andNotEqualTo("activityStatus",ActivityStatus.CLOSURE.getCode());
List<TPromoActivity>list=tPromoActivityMapper.selectByExample(example);
if(!Strings.isNullOrEmpty(activityCode)){
//再根据当前活动编码获取叠加活动list2
TPromoActivityVOactivity= selectActivityByCode(activityCode,systemMercCode);
List<TPromoActivityCompVO>list2=tpromoActivityCompService.getList(activity.getId());
//存储叠加活动id
List<Long>activitys=newArrayList<>(list2.size());
activitys.add(activity.getId());
list2.forEach(x->activitys.add(x.getAddedActivityId()));
//去重
for(Iterator<TPromoActivity>iterator=list.iterator();iterator.hasNext();){
TPromoActivityactivityTemp=iterator.next();
if(activitys.contains(activityTemp.getId())){
iterator.remove();
}
}
}
ConcurrentModificationException当方法检测到对象的并发修改,但不允许这种修改时,抛出此异常。主要原因是iterator.next()时会检查size
大小,如果改变就会抛出异常
附带几个解决方法 带几个解决方
方法一 迭代移除 iterator.remove();
方法二 对应索引移除// for (int i = 0; i < list.size(); i++){
// Integer integer = list.get(i);
// if (list2.contains(integer)){
// list.remove(integer);
// list.remove(i);
// }
// }
方法三 :
list 集合 使用线程安全方式创建 CopyOnWriteArrayList 移除时 按平时操作移除对象
// while (it.hasNext()) {
// String s = it.next();
// if (s.equals("string2")) {
// strList.remove(s);
// }
// }
- java.util.ConcurrentModificationException 并发修改异常处理
- java.util.ConcurrentModificationException:并发修改异常!
- java.util.ConcurrentModificationException异常处理
- java.util.ConcurrentModificationException 异常处理
- java.util.ConcurrentModificationException异常处理
- java.util.ConcurrentModificationException异常处理
- Java并发修改异常ConcurrentModificationException
- JAVA ConcurrentModificationException并发修改异常
- java.util.ConcurrentModificationException异常处理方式
- java.util.ConcurrentModificationException异常的处理
- java.util.ConcurrentModificationException异常分析及处理
- Android并发修改异常:java.util.ConcurrentModificationException——诺诺"涂鸦"记忆
- 深入分析集合并发修改异常(源码分析)java.util.ConcurrentModificationException
- java.util.ConcurrentModificationException ,遍历集合并同时修改集合,并发造成的异常解决办法
- 关于迭代器的在集合遍历中发生的并发修改异常(java.util.ConcurrentModificationException
- 多线程报错 : Exception in thread "Thread-3" java.util.ConcurrentModificationException 并发修改异常
- 异常:java.util.ConcurrentModificationException
- java.util.ConcurrentModificationException异常
- XCODE 快捷键
- 注解@PostConstruct与@PreDestroy详解及实例
- 控制自己的贪念,提升自己的能力
- JVM垃圾回收与性能调优
- laravel使用ElasticSearch进行搜索
- java.util.ConcurrentModificationException 并发修改异常处理
- Jstat pid not found
- 【学习摘记】马士兵Servlet&JSP_课时24_forward_sendredirect——原页面跳转 vs 新页面跳转
- 树莓派3B:桌面环境下用QTCreator开发直连MSSQL的GUI应用程序
- 递归-8皇后问题
- CSS控制文字只显示一行,超出部分显示省略号
- thinkphp5.0中分页后传递查询参数
- ucos-iii学习之实时操作系统(RTOS)
- 高校实验室安全VR教育培训系统