Heim > Java > javaLernprogramm > Hauptteil

Wie vermeide ich „ConcurrentModificationException' bei der Verwendung synchronisierter Methoden?

Patricia Arquette
Freigeben: 2024-11-08 02:36:02
Original
685 Leute haben es durchsucht

How to Avoid `ConcurrentModificationException` When Using Synchronized Methods?

Vermeiden von ConcurrentModificationException bei Verwendung synchronisierter Methoden

Der ConcurrentModificationException-Fehler tritt normalerweise aufgrund von Änderungen an der Sammlung auf, über die ein Iterator innerhalb der Schleife iteriert Körper. Trotz des Vorhandenseins eines synchronisierten Schlüsselworts in der Methodendeklaration kann diese Ausnahme immer noch auftreten.

Im bereitgestellten Codeausschnitt:

public synchronized X getAnotherX(){ 
  if(iterator.hasNext()){
   X b = iterator.next();
   String name = b.getInputFileName();
  ...
   return b;
  }
  else{return null;}
 }
Nach dem Login kopieren

Der Fehler wird wahrscheinlich aufgrund eines externen Threads ausgelöst ändert die zugrunde liegende Sammlung, während der Iterator darüber iteriert. Diese Änderung kann das Hinzufügen oder Entfernen von Elementen umfassen.

Die Lösung für dieses Problem besteht darin, sicherzustellen, dass kein anderer Thread die Sammlung während der Iteration ändern kann. Dies kann erreicht werden, indem eine Kopie der Sammlung erstellt wird, bevor darüber iteriert wird. Wenn dies jedoch nicht möglich ist, muss der Iterator auf threadsichere Weise abgerufen werden. Dies kann durch die Verwendung der Collections.synchronizedList()-Methode oder durch die Erstellung eines benutzerdefinierten Synchronisierungs-Wrappers für die Sammlung erfolgen.

Mit diesen Schritten können Sie sicherstellen, dass die ConcurrentModificationException nicht auftritt und dass die Sammlung iteriert wird sicher vorbei.

Das obige ist der detaillierte Inhalt vonWie vermeide ich „ConcurrentModificationException' bei der Verwendung synchronisierter Methoden?. 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