Sobes.tech
Junior — Middle

Welche Methoden können verwendet werden, um die ConcurrentModificationException beim Arbeiten mit Sammlungen in einer Multithread-Umgebung zu vermeiden?

sobes.tech KI

Antwort von AI

Um die Ausnahme ConcurrentModificationException bei der Arbeit mit Sammlungen in einer Multithread-Umgebung zu vermeiden, können folgende Methoden verwendet werden:

  • Verwendung von thread-sicheren Sammlungen aus dem Paket java.util.concurrent, z.B. ConcurrentHashMap, CopyOnWriteArrayList.
  • Manuelles Synchronisieren des Zugriffs auf die Sammlung mit synchronized-Blöcken oder anderen Synchronisationsmechanismen.
  • Verwendung von Iteratoren, die sichere Modifikationen unterstützen, z.B. ListIterator für Listen.
  • Erstellen von Kopien der Sammlungen für die Iteration (z.B. durch new ArrayList<>(originalList)), um Änderungen an der Originalsammlung während der Iteration zu vermeiden.

Beispiel für die Verwendung von CopyOnWriteArrayList:

CopyOnWriteArrayList<String> list = new CopyOnWriteArrayList<>();
list.add("item1");
for (String item : list) {
    list.add("item2"); // verursacht keine ConcurrentModificationException
}