# ConcurrentModificationException



## illaX (22. Februar 2007)

Morgen freaks,

ich habe ein grosses Problem und komme damit nicht klar.

Mein Programm dreht sich um eine Klasse. GUI's, und viele Klassen greifen auf eine Datenstruktur zu (Eine Liste von Objekte, alle desselben Typs). Da alles in Threads ablaeuft muss ich es synchronisieren, ich habe allerdings sehr wenig Wissen ueber dieses Thema und komme nicht weiter.

Die Threads greifen alle auf diese Datenstruktur zu und stellen sie in Tabellen dar oder veraendern Daten. Jetzt iteriere ich durch die Objekte und bekomme staendig den Fehler java.util.ConcurrentModificationException. Habe mal alle setter synchronisiert, aber das reicht nicht. Dann habe ich alle Methoden synchronisiert, aber dann ist das Programm zu langsam. Habe gelesen das ich mir ein Objekt anlegen muss, dass ich als Monitor verwenden muss. Ist dies die einzigste Moeglichkeit ein Objekt zu synchronisiere. Weil ich greife in mindestens. 25 Klassen auf diese Datenstruktur zu.

Vielleicht kann mir ja jemand helfen, Danke.


----------



## Thomas Darimont (22. Februar 2007)

Hallo,

versuch doch mal statt einer normalen Liste eine java.util.concurrent.CopyOnWriteArrayList zu verwenden.

Gruß Tom


----------



## illaX (23. Februar 2007)

Vielen Dank,

ich konnte es noch nicht aufs gesamte Projekt umsetzen, aber bei einer Tabelle hat es mein Problem schon geloest.


----------



## illaX (23. Februar 2007)

Hi,

ich habe nochmal eine Frage dazu. Der Fehler kommt ja nur wenn ich iteriere oder?
Nun kann ich ja auch durch die Liste laufen mit for (int i = 0; i < list.size(); i++).
Soweit ich es verstanden habe duerfte er dann keine Exception mehr werfen oder?


----------



## pupuluku (20. Mai 2010)

Das dürfte richtig sein, so umgehe ich zumindest regelmäßig die Iteratorprobleme.


----------

