java.util.ConcurrentModificationException - aber nur ein Thread

shadow

Aktives Mitglied
Hallo,

ich bekomme sporadisch an immer der gleichen Stelle in meinem Programm eine java.util.ConcurrentModificationException... allerdings bin ich mir sehr sicher, dass es nur einen Thread gibt, der auf das Stück Code zugreift. Hier ist die Stelle:

Java:
        for (Iterator<Fade> it = fadeList.iterator(); it.hasNext(); ) {
            Fade fade = it.next();              //  <<<<<<<<<<<<< Zeile mit der Exception
            fade.doLogic(delta);
            soundSystem.setVolume(fade.getId(), fade.getValue());
            if (fade.isOver()) {
                if (fade.getValue() <= 0) {
                    soundSystem.stop(fade.getId());
                }
                it.remove();
            }
        }

Ich habe leider noch keine Idee, wie ich weiter analysieren kann, um die Ursache für die Exception zu finden...

Wie gehe ich hier am Besten vor?

Danke!
Stefan
 
hast du zufällig eine GUI, die parallel läuft?

ganz strukturell könntest du die fadeList durch eine überschriebene ArrayList ersetzen und alle set-Zugriffe loggen,
evtl. nur in bestimmten Bereichen, falls zu viele Ausgaben, z.B. vor der Schleife ein, danach ausschalten

mit new Error().printStackTrace() siehst du wer der Aufrufer ist
 
Danke für den tollen Tipp!
Ich habe eine Subclass von ArrayList gemacht, und so die Threads überwachen können. So hab ich den Fehler gefunden, es war tatsächlich noch ein anderer Thread im Spiel, der im Hintergrund Daten nachgeladen hat und versehentlich auf der gleichen Liste gearbeitet hat...
 
einfacher wäre es dann vielleicht doch gewesen, zum Fehlerzeitpunkt bzw. allgemein an etwa der Code-Stelle
mit Thread.getAllStackTraces() die aktuell vorhandenen Threads nachzuschauen,
aber schön wenn es geklappt hat
 

Neue Themen


Zurück
Oben