Heim >Java >javaLernprogramm >ConcurrentModificationException in Java mit Beispielen

ConcurrentModificationException in Java mit Beispielen

Barbara Streisand
Barbara StreisandOriginal
2025-02-07 12:01:13876Durchsuche

ConcurrentModificationException in Java with Examples

In der java -multithread -Umgebung kann eine Ausnahme ausgelöst werden, wenn die Methode während der Ressourcenerkennung auf gleichzeitige Modifikationen trifft. Zu diesem Zeitpunkt befindet sich das Objekt in einem nicht modifizierten Zustand. ConcurrentModificationException

Folgendes ist ein Beispiel für eine Ausnahme:

ConcurrentModificationException

Diese Ausnahme tritt normalerweise auf, wenn:
<code class="language-java">Exception in thread "main" java.util.ConcurrentModificationException
    at java.base/java.util.ArrayList$Itr.checkForComodification(ArrayList.java:000)
    at java.base/java.util.ArrayList$Itr.next(ArrayList.java:000)
    at com.journaldev.ConcurrentModificationException.ConcurrentModificationExceptionExample.main(ConcurrentModificationExceptionExample.java:00)</code>

Die Erkennung und Iteration der Ausnahme sind in der

-Methode nicht definiert.
  • Verwenden Sie ein internes Flag namens
  • , die schnell gefertigten Iteratorblöcke in der Schleife.
  • modCount

Ausnahmealgorithmus ConcurrentModificationException Dieser Algorithmus zeigt, wie man

Ausnahmen in einer Java -Umgebung erzeugt. Wir werden einen Java -Code schreiben, um mehrere Lösungen zu untersuchen.

java.util.ConcurrentModificationException

    Starten Sie den Prozess.
  1. deklarieren und importieren Sie die erforderlichen Java -Pakete.
  2. deklarieren Sie eine öffentliche Klasse.
  3. deklarieren Sie einen String -Parameter.
  4. Erstellen Sie ein ArrayList -Objekt.
  5. Erstellen Sie eine neue ArrayList.
  6. Füllen Sie die ArrayList aus.
  7. deklarieren Sie einen Try -Block.
  8. Druckliste.
  9. deklarieren Sie einen Iterator.
  10. Verwenden Sie während der Schleife, um den nächsten Wert zu durchqueren.
  11. Fügen Sie während der Iteration einen Wert hinzu.
  12. Drucken Sie die aktualisierte ArrayList.
  13. Verwenden Sie während der Schleife, um den nächsten Wert zu durchqueren.
  14. Ausnahme.
  15. Ausnahmeinformationen drucken.
  16. Holen Sie sich den Wert.
  17. Stoppen Sie den Prozess.

Ausnahme -Syntax ConcurrentModificationException Die folgende Syntax zeigt, wie eine

-Ausnahme in einer Java -Umgebung generiert wird:

ConcurrentModificationException

Die obige Syntax zeigt, wie
<code class="language-java">// ... (代码片段省略,与原文类似,但使用更简洁的变量名和注释) ...</code>
Ausnahmen in einer Java -Umgebung generiert werden.

ConcurrentModificationException

Lösung

    Methode 1: Ändern Sie während des Iterationsprozesses
  • Diese Methode modifiziert die Sammlung während des Iterationsprozesses direkt. Wenn der Fast-Fail-Iterator fehlschlägt, wird eine Ausnahme ausgelöst.

<code class="language-java">for (Iterator<integer> iterator = integers.iterator(); iterator.hasNext();) {
    Integer integer = iterator.next();
    if(integer == 2) {
        iterator.remove(); // 使用迭代器的remove()方法安全地移除元素
    }
}</integer></code>
    Methode 2: Verwenden Sie die Iterator
  • und Methoden und Schleifen next() remove()
  • Diese Methode verwendet die
-Methode. Wenn der Satz in einer Umgebung mit mehreren Threads modifiziert wird, wird eine Ausnahme ausgelöst.

iterator.next()

Schlussfolgerung

ConcurrentModificationException Ausnahmen treten normalerweise auf, wenn die Sammlung gleichzeitig geändert wird. In diesem Artikel wird beschrieben, wie diese Ausnahme vermieden wird, und liefert entsprechende Beispiele für Java -Code. Diese Ausnahme kann effektiv unter Verwendung von Thread-Safe-Sammlungsklassen wie CopyOnWriteArrayList oder ConcurrentHashMap sowie mit der Methode des Iterators vermieden werden. remove()

Das obige ist der detaillierte Inhalt vonConcurrentModificationException in Java mit Beispielen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn