Q30: What is the difference between Fail-Fast and Fail-Safe Iterators?

  • Fail-Fast (ArrayList, HashMap): Operates directly on the underlying collection. Checks modCount. If structural modifications occur during iteration, it throws ConcurrentModificationException immediately.
  • Fail-Safe (ConcurrentHashMap, CopyOnWriteArrayList): Operates on a clone copy or weakly-consistent iterator view. Does NOT throw ConcurrentModificationException when collection is modified concurrently.
Key Takeaways
  • Fail-Fast throws ConcurrentModificationException on concurrent edits.
  • Fail-Safe iterates over copies or concurrent snapshots cleanly.
Knowledge Check

Which collection produces a Fail-Safe iterator during modification iterations?