JDK 1.6의 HashSet.java에는 HashSet의 iterator의 fail-fast 속성에 대한 몇 가지 설명이 있습니다. 반복자의 작성 후에, 세트, 반복자 자체의 remove 메소드 이외 방법으로 변경되면, 반복자는 ConcurrentModificationException를 던졌습니다 :이 클래스의 iterator 메소드에 의해 반환fail-fast에 대한이 설명을 이해할 수 없음
반복자는 빠르다. 따라서 동시 수정이 이루어지면 반복자는 미래에 예측할 수없는 시간에 임의의 비 결정적 동작을 위험에 빠뜨리는 대신 빠르고 신속하게 실패합니다.
매우 단순하고 명확하기 때문에 위의 단락을 이해할 수 있지만 다음 단락을 이해할 수는 없습니다. 비록 빠른 패러다임 반복자가 실패 할 수 있다는 간단한 예제가 있다면 이해할 수있을 것입니다.
일반적으로 말하면, 비동기 동시 수정이있을 경우에는 확실한 보장을 할 수 없으므로 반복기의 빠른 빠른 동작은 보장 할 수 없습니다. Fail-fast iterator는 최선 노력 (best-effort) 기준으로 ConcurrentModificationException을 던집니다. 따라서,이 예외에 의존하는 프로그램을 작성하는 것은 잘못된 것입니다. 반복자의 fail-fast 동작은 버그를 탐지하는 용도로만 사용해야합니다.
기본적으로 말하자면, 자바에 의존하여 반복자를 남용하고 있음을 분명히 알리지 마십시오. 간단히 말해, 반복하면서 목록을 수정할 수는 없습니다. – thatidiotguy