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); } }
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!