java.util.ConcurrentModificationException异常的解决实例
2010-07-19 17:29
561 查看
我们知道,对于Collection而言,在对其iterator的过程中,是不能调用Collection的remove等方法的,这样会报java.util.ConcurrentModificationException异常,通常用iterator的remove方法来达到目的,示例程序如下:
但是今天在公司写的代码,忽然报出了java.util.ConcurrentModificationException异常,只是普通的遍历一个list,添加一个userid到set中,代码如下:
这个情况下就会报出ConcurrentModificationException异常,令人百思不得其解。
调试了很久,也写了一个示例程序,忽然发现,程序是在多线程环境下,这样,set是非线程安全的,因此,给其加上锁就行了,好简单,唉。
List<String> list = new ArrayList<String>(); for (int i = 0; i < 10; i++) { String str = "td" + i; list.add(str); } for (Iterator it = list.iterator(); it.hasNext();) { String str = (String) it.next(); if (str.equals("td5")) { // list.remove(str); // 删除方法一 it.remove(); // 删除方法二 }
但是今天在公司写的代码,忽然报出了java.util.ConcurrentModificationException异常,只是普通的遍历一个list,添加一个userid到set中,代码如下:
Set<String> set = new HashSet<String>(); if (activities != null) { for (Activity tx : activities) { set.add(tx.getUserID()); } }
这个情况下就会报出ConcurrentModificationException异常,令人百思不得其解。
调试了很久,也写了一个示例程序,忽然发现,程序是在多线程环境下,这样,set是非线程安全的,因此,给其加上锁就行了,好简单,唉。
Set<String> set = new HashSet<String>(); if (activities != null) { synchronized (set) { for (Activity tx : activities) { set.add(tx.getUserID()); } } }
相关文章推荐
- java.util.ConcurrentModificationException异常解决方法
- 遍历Map时抛出java.util.ConcurrentModificationException异常的解决办法
- 从ArrayList中删除对象报java.util.ConcurrentModificationException异常解决
- java.util.ConcurrentModificationException 异常解决办法及原理(顶)
- java.util.ConcurrentModificationException 异常的解决方法
- 从ArrayList中删除对象报java.util.ConcurrentModificationException异常解决
- java.util.ConcurrentModificationException异常的解决办法
- java.util.ConcurrentModificationException的异常的出现与解决
- java.util.ConcurrentModificationException异常解决
- java.util.ConcurrentModificationException 异常解决办法及原理
- java.util.ConcurrentModificationException 解决办法(使用迭代器时出现异常)
- java.util.ConcurrentModificationException 异常解决办法及原理
- 遍历Map时抛出java.util.ConcurrentModificationException异常的解决办法
- java.util.ConcurrentModificationException异常最简单的解决办法
- java.util.ConcurrentModificationException异常 解决方法
- java.util.ConcurrentModificationException ,遍历集合并同时修改集合,并发造成的异常解决办法
- java.util.ConcurrentModificationException异常解决方法
- java.util.ConcurrentModificationException异常参考解决方法
- 主题:java.util.ConcurrentModificationException 异常解决办法
- java.util.ConcurrentModificationException 异常解决的方法及原理