Q30: What is the difference between Fail-Fast and Fail-Safe Iterators?
- Fail-Fast (
ArrayList,HashMap): Operates directly on the underlying collection. ChecksmodCount. If structural modifications occur during iteration, it throwsConcurrentModificationExceptionimmediately. - Fail-Safe (
ConcurrentHashMap,CopyOnWriteArrayList): Operates on a clone copy or weakly-consistent iterator view. Does NOT throwConcurrentModificationExceptionwhen collection is modified concurrently.
Key Takeaways
- Fail-Fast throws
ConcurrentModificationExceptionon concurrent edits. - Fail-Safe iterates over copies or concurrent snapshots cleanly.
Knowledge Check
Which collection produces a Fail-Safe iterator during modification iterations?