Warum tritt in Java eine Ausnahme bei gleichzeitiger Änderung auf?

Warum tritt in Java eine Ausnahme bei gleichzeitiger Änderung auf?
Warum tritt in Java eine Ausnahme bei gleichzeitiger Änderung auf?
Anonim

Die ConcurrentModificationException tritt auf, wenn ein Objekt gleichzeitig geändert werden soll, obwohl es nicht zulässig ist. Diese Ausnahme tritt normalerweise auf, wenn man mit Java Collection-Klassen arbeitet. Zum Beispiel - Es ist einem Thread nicht erlaubt, eine Sammlung zu ändern, wenn ein anderer Thread darüber iteriert.

Wie behebe ich die Ausnahme gleichzeitiger Änderungen?

Wir können die Concurrent Modification Exception auch in einer Single-Thread-Umgebung vermeiden. Wir können die Methode remove von Iterator verwenden, um das Objekt aus dem zugrunde liegenden Sammlungsobjekt zu entfernen. Aber in diesem Fall können Sie nur dasselbe Objekt und keine anderen Objekte aus der Liste entfernen.

Wie verhindern Sie gleichzeitige Änderungsausnahmen auf einer Karte?

use ConcurrentHashMap. Verwenden Sie weiterhin einfache HashMap, aber erstellen Sie bei jeder Änderung eine neue Karte und wechseln Sie die Karten hinter den Kulissen (Synchronisieren der Wechseloperation oder Verwenden von AtomicReference)

Welche Methode des Iterators löst gleichzeitige Änderungsausnahme aus?

Wenn wir eine Folge von Methoden für ein Objekt aufrufen, das gegen seinen Vertrag verstößt, löst das Objekt ConcurrentModificationException aus. Beispiel: Wenn wir beim Iterieren über die Sammlung direkt versuchen, diese Sammlung zu ändern, löst der angegebene fail-fast iterator diese ConcurrentModificationException aus.

Was ist die gleichzeitige Änderungsausnahme im Java-Stapelüberlauf?

Wenn ein einzelner Thread eine Folge von Methodenaufrufen ausgibt, die den Vertrag eines Objekts verletzt, kann das Objekt diese Ausnahme auslösen. Wenn beispielsweise ein Thread eine Sammlung direkt ändert, während er mit einem Fail-Fast-Iterator über die Sammlung iteriert, löst der Iterator diese Ausnahme aus.

Empfohlen: