为什么会出现以下异常?
2012-08-28 11:41:59,183 ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[localhost].[/TFO].[tfo]] (http-0.0.0.0-8080-9) Servlet.service() for servlet tfo threw exception: java.util.ConcurrentModificationException
at java.util.HashMap$HashIterator.nextEntry(HashMap.java:793) [:1.6.0_24]
at java.util.HashMap$EntryIterator.next(HashMap.java:834) [:1.6.0_24]
at java.util.HashMap$EntryIterator.next(HashMap.java:832) [:1.6.0_24]
at net.sf.json.JSONObject._fromMap(JSONObject.java:1082) [:]
at net.sf.json.JSONObject.fromObject(JSONObject.java:173) [:]
at net.sf.json.JSONObject._processValue(JSONObject.java:2552) [:]
答案 0 :(得分:10)
您是如何尝试删除地图中的对象(键,值)的?如果您使用for-each Construct并尝试删除它,即使您的代码在单线程环境中执行,也会抛出异常。
如果你像这样迭代它:
for(Entry<String, Object> entry : session.entrySet()) {
if (condition) {
// throws a ConcurrentModificationException
session.remove(entry.getKey());
}
}
然后你应该改为:
Iterator<Entry<String, Object>> it = session.entrySet().iteration;
while (it.hasNext) {
Entry<String, Object> entry = it.next();
if (condition) {
it.remove(); // avoids a ConcurrentModificationException
}
}
中讨论的类似问题