fail-fast
동작에 대해 알아 보려면 java.util.HashMap
으로 놀았습니다.자바 HashMap의 빠른 동작이 실패합니다
HashMap map = new HashMap();
map.put("jon", 10);
map.put("sean", 11);
map.put("jim", 12);
map.put("stark", 13);
map.put("vic", 14);
Set keys = map.keySet();
for(Object k:keys) {
System.out.println(map.get(k));
}
for(Object k:keys) {
String key =(String)k;
if(key.equals("stark")) {
map.remove(key);
}
}
System.out.println("after modifn");
for(Object k:keys) {
System.out.println(map.get(k));
}
나는
12
11
10
14
13
after modifn
12
11
10
14
나는 또한 내가 어느 경우에 어떤 ConcurrentModificationException
을하지 않았다이 반복자
Iterator<String> itr = keys.iterator();
while(itr.hasNext()) {
String key = itr.next();
if(key.equals("stark")) {
map.remove(key);
}
}
을 ..Is 사용하여 시도 결과를 가지고 있기 때문에 (의 javadoc에서)
itera의 fail-fast 동작 토르가 그대로 보장 될 수는 없으므로 일반적으로 동기화되지 않은 동시 수정이 있는지 확인하기가 어렵습니다. 르파 반복자 내가, 당신이 ..what 생각
ConcurrentModificationException
를 던질 것이라고 또 다른 thread 체크 최선 노력 원칙에 근거 해
에 ConcurrentModificationException를 던져? 당신이 보여 출력을 감안할 때
'remove()'대신'clear()'를 호출 해보십시오. – Bringer128