JAVA 运行时报错:catch an exception java.util.ConcurrentModificationException
来源:互联网 发布:阿里移动推荐算法代码 编辑:程序博客网 时间:2024/06/05 14:59
写代码时候遇到,记一笔。
Map<String, String> needToQueryDate = new HashMap<String, String>();needToQueryDate.add("201708","Y");needToQueryDate.add("201707","Y");needToQueryDate.add("201706","Y");needToQueryDate.add("201705","N");List<String> newUserNeedToQueryDate = new ArrayList<String>();needToQueryDate.add("201708");needToQueryDate.add("201707"); for(String needToQueryDateItem : needToQueryDate.keySet()){if(!needToQueryDate.contains(needToQueryDateItem)){needToQueryDate.remove(needToQueryDateItem);}
2017-08-02 15:37:19,599 [jboss-server-executor-4] ERROR QueryServiceImpl - TraceId:9914, catch an exceptionjava.util.ConcurrentModificationExceptionat java.util.HashMap$HashIterator.nextEntry(HashMap.java:793)at java.util.HashMap$KeyIterator.next(HashMap.java:828)at com.zzf.service.impl.QueryServiceImpl.handleLib(QueryServiceImpl.java:726)at com.zzf.service.impl.QueryServiceImpl.billQuery(QueryServiceImpl.java:187)at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)at java.lang.reflect.Method.invoke(Method.java:597)at org.jboss.netty.channel.SimpleChannelUpstreamHandler.handleUpstream(SimpleChannelUpstreamHandler.java:70)at org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:564)at org.jboss.netty.channel.DefaultChannelPipeline$DefaultChannelHandlerContext.sendUpstream(DefaultChannelPipeline.java:791)at org.jboss.netty.handler.execution.ChannelUpstreamEventRunnable.doRun(ChannelUpstreamEventRunnable.java:43)at org.jboss.netty.handler.execution.ChannelEventRunnable.run(ChannelEventRunnable.java:67)at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895)at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)at java.lang.Thread.run(Thread.java:662)
Google原因为:
Iterator做遍历的时候,HashMap被修改(bb.remove(ele), size-1),Iterator(Object ele=it.next())会检查HashMap的size,size发生变化,抛出错误ConcurrentModificationException。
Google解决办法有:
1) 根据实际程序,手动给Iterator遍历的那段程序加锁,给修改HashMap的那段程序加锁。2) 使用ConcurrentHashMap,ConcurrentHashMap会自己检查修改操作,对其加锁,也可针对插入操作。
阅读全文
0 0
- JAVA 运行时报错:catch an exception java.util.ConcurrentModificationException
- Iterator遍历时报错 java.util.ConcurrentModificationException
- Exception in thread "main" java.util.ConcurrentModificationException
- Exception in thread "main" java.util.ConcurrentModificationException
- Exception in thread "main" java.util.ConcurrentModificationException
- Exception in thread "main" java.util.ConcurrentModificationException
- java.util.ConcurrentModificationException 报错
- java -- Exception in thread "main" java.util.ConcurrentModificationException
- 【ConcurrentModificationException】java.util.ConcurrentModificationException 解决办法
- java.util.ConcurrentModificationException! java.util.ConcurrentModificationException!
- java:java.util.ConcurrentModificationException
- Exception in thread "Thread-6" java.util.ConcurrentModificationException
- Exception in thread "AWT-EventQueue-0" java.util.ConcurrentModificationException
- Exception in thread "AWT-EventQueue-0" java.util.ConcurrentModificationException
- 异常:Exception in thread "main" java.util.ConcurrentModificationException
- 异常:java.util.ConcurrentModificationException
- java.util.ConcurrentModificationException异常
- java.util.ConcurrentModificationException异常
- AndroidStudio 插件集合 进行高效开发
- 动态规划——Warcraft
- 【HDU 1863】畅通工程(基础最小生成树,Kruskal算法)
- 【框架学习】springMVC过滤器与servlet拦截器区别
- mysql中复制表结构的方法小结
- JAVA 运行时报错:catch an exception java.util.ConcurrentModificationException
- 基尔霍夫矩阵计算欧拉回路
- PluginManager分析
- Android动画学习(六)之View揭露效果和SurfaceView实现动画
- C语言之从尾到头打印链表
- dubbo配置方式(上)
- 剑指offer——1.二维数组中的查找
- CSU 1562 Fun House
- HDU 6064 RXD and numbers BEST theorem