Start here. This is the direct spoken answer to practice first.
Overview
Despite its name, this exception commonly appears in one thread when code changes a collection during iteration.
ConcurrentModificationException usually means a collection was structurally changed while an iterator was traversing it in a way the iterator does not allow. A for-each loop uses an iterator internally, so calling list.remove inside that loop can trigger the same problem. Safe options include Iterator.remove, removeIf, or collecting the changes and applying them after traversal. The exact choice depends on whether the operation is removal, replacement, or building a new result.