當您使用Java 1.5 modern for循環集合並刪除某些元素 concurrentmodifuicationexception被拋出時。爲什麼不拋出ConcurrentModificationException
但是當我運行follwoing代碼,它不拋出任何異常:
public static void main(String a []){
Set<String> strs = new HashSet<String>();
strs.add("one");
strs.add("two");
strs.add("three);
for(String str : strs){
if(str.equalsIgnoreCase("two"){
strs.remove(str);
}
}
}
上面的代碼不會拋出ConcurrentModificationException。但是當我在我的Web應用程序服務方法中使用任何這樣的循環時,它總是拋出一個。爲什麼?我確定當它運行在service方法中時,沒有兩個線程正在訪問集合那麼,在兩個場景中引發差異的原因是什麼引起了它在一個而不是另一個引發的情況?
[給我一個(http://ideone.com/o73eW) – Eric