2014-03-18 3 views
0

ConcurrentModificationException에 대해 읽었습니다. 컬렉션에 대한 반복 (iteration)의 경우이 예외를 얻기위한 정보가 많이 있습니다.반복자가없는 ConcurrentModificationException (암시 적 또는 명시 적)입니다. 진짜야?

나를 위해 흥미 롭다 iterator를 사용하지 않고이 예외를 얻을 수 있을까요?

+1

당신이 ArrayList에의 코드를 읽는다면, 예를 들어, 당신이 ConcurrentModification는 것을 볼 수 있습니다 writeObject() 메서드가 직렬화 중에 목록이 변경되었음을 감지하면 throw됩니다. 따라서 스레드가 직렬화되는 동안 목록을 수정하고 직렬화 스레드가 수정 사항을 확인하면 그러한 예외가 발생합니다. –

답변

0

이터레이터를 제외하고이 예외가 발생하는 표준 목록 구현에는 많은 장소가 없습니다. writeObject 메서드는 이미 주석에 언급되었습니다. 또 다른 하나는 ArrayList로부터 취득한 subList을 수정하려고 할 때하고 ArrayList는 그 동안 수정되었습니다 :

List<String> list = new ArrayList<String>(); 
list.add("A"); 
list.add("B"); 
list.add("C"); 

// Obtain the subList 
List<String> subList = list.subList(1,2); 

// Modify the backing list 
list.add("X"); 

// Try to modify the subList: Causes ConcurrentModificationException 
subList.add("Y"); 
0

예.

throw new ConcurrentModificationException(); 
+0

아하하))) 정말 진실입니다.))) – gstackoverflow

+0

하나의 변형입니까? – gstackoverflow

관련 문제