Heim > Java > javaLernprogramm > Warum erhalte ich eine ConcurrentModificationException in einer synchronisierten Methode?

Warum erhalte ich eine ConcurrentModificationException in einer synchronisierten Methode?

Patricia Arquette
Freigeben: 2024-11-08 02:50:01
Original
859 Leute haben es durchsucht

Why Am I Getting ConcurrentModificationException in a Synchronized Method?

ConcurrentModificationException in der synchronisierten Methode: Die Verwirrung aufdecken

In einer synchronisierten Methode wie der bereitgestellten kann die ConcurrentModificationException-Ausnahme auch bei der synchronisierten Methode auftreten Modifikator. Diese Ausnahme resultiert normalerweise aus der Änderung der Sammlung, über die innerhalb der Iterationsschleife iteriert wird.

Das Problem hierbei ist, dass die Synchronisierung der Methode nicht garantiert, dass die Sammlung während der Iteration nicht geändert wird. Um diese Ausnahme zu verhindern, ist es unbedingt erforderlich, die Sammlung während der Iteration nicht zu ändern.

Ein typisches Beispiel für einen Codeausschnitt, der diese Ausnahme auslösen würde, ist:

Iterator iterator = collection.iterator();
while (iterator.hasNext()) {
    Item item = (Item) iterator.next();
    if (item.satisfiesCondition()) {
       collection.remove(item);
    }
}
Nach dem Login kopieren

Stattdessen sollte der Code verwenden die Methode iterator.remove() zum Entfernen von Elementen aus der Sammlung während der Iteration. Wenn Ergänzungen zur Sammlung erforderlich sind, kann der Untertyp ListIterator verwendet werden, da er beim Umgang mit einer Liste eine add()-Methode bereitstellt.

Das obige ist der detaillierte Inhalt vonWarum erhalte ich eine ConcurrentModificationException in einer synchronisierten Methode?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage