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.
ListIteratorfü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
}