ConcurrentModificationException:

Feb 09 2023
Die Hauptmethode besteht darin, die Ganzzahlen zur Liste hinzuzufügen. Innerhalb der Hauptmethode starten wir den untergeordneten Thread.

Die Hauptmethode besteht darin, die Ganzzahlen zur Liste hinzuzufügen.

Innerhalb der Hauptmethode starten wir den untergeordneten Thread. dh

t.start()

Derzeit haben wir zwei Threads im Prozess.

Nun versucht der Hauptthread, die Elemente der Liste zu iterieren, und innerhalb dieses Prozesses versucht der untergeordnete Thread, das Element 4 zur Liste hinzuzufügen.

Daher gibt es eine ConcurrentModificationException.

Wie vermeide ich ConcurrentModificationException?

1. Wir können gleichzeitige Sammlungen wie concurrentHashmap und CopyonWriteArrayList verwenden, die niemals eine ConcurrentCollectionException auslösen.

2. Anstelle der Iteration über die Sammlungsklasse können wir über das Array iterieren, dies führt jedoch nur dann zu Leistungseinbußen, wenn die Arraygröße zu groß ist.

Notiz:

Es ist nicht zwingend erforderlich, dass diese Ausnahme nur dann ausgelöst wird, wenn ein anderer Thread versucht, ein Sammlungsobjekt zu ändern. Dies kann passieren, wenn ein einzelner Thread über die eine oder andere Methode verfügt, die versucht, den Vertrag des Objekts zu verletzen.