注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

韬光养晦

路漫漫其修远兮,吾将上下而求索

 
 
 

日志

 
 

JAVA多线程操作Iterator及对象复制  

2009-05-29 21:56:21|  分类: JAVA |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
今天测试程序总是出现java.util.ConCurrentModificationException异常,经检查原因确定为遍历集合的过程中使用到了Iterator,而在遍历的过程中,由于多线程(情况1)或者单线程(情况2)中人为的直接修改了集合本身。这样在Iterator执行next方法的时候,检查到原集合发生了变化,即抛出异常。

解决方法有二,分别真对于情况一和情况二:
情况1 : 对集合加锁,利用synchronized关键字。或者根据需要进行集合的浅复制或者深复制,再迭代。
情况2 : 用Iterator的remove方法修改集合。

参考:
1 关于Iterator的java.util.ConCurrentModificationException异常部分:
http://hi.baidu.com/sdausea/blog/item/57b2fa3dcb101908bba1672e.html
http://imyself.javaeye.com/blog/334799
http://www.javaeye.com/topic/96555
2 关于JAVA中对象的复制部分:
http://liuwang126.javaeye.com/blog/272595
http://www.builder.com.cn/2007/0629/414712.shtml
  评论这张
 
阅读(994)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018