Hallo,
Ich schlage mich (wieder) mit einer ConcurrentModException herum ...
Ich weiß, dass diese auftritt wenn ich während einer Schleife, die Elemente einer List über die gelaufen wird, verändere ...
Diese Exception tritt trotz Gegenmaßnahmen auf (d.h. ich erstelle einen neue Collection mit den zu entfernenden Elementen und nach der Schleife rufe ich
auf ...
Dennoch:
Exception in thread "AWT-EventQueue-0" java.util.ConcurrentModificationException
at java.util.AbstractList$Itr.checkForComodification(AbstractList.java:372)
at java.util.AbstractList$Itr.next(AbstractList.java:343)
at cells_sim.Gamepanel.paintComponent(Gamepanel.java:91)
at javax.swing.JComponent.paint(JComponent.java:1017)
at javax.swing.JComponent.paintToOffscreen(JComponent.java:5112)
at javax.swing.BufferStrategyPaintManager.paint(BufferStrategyPaintManager.java:278)
at javax.swing.RepaintManager.paint(RepaintManager.java:1220)
at javax.swing.JComponent._paintImmediately(JComponent.java:5060)
at javax.swing.JComponent.paintImmediately(JComponent.java:4870)
at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:803)
at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:714)
at javax.swing.RepaintManager.seqPaintDirtyRegions(RepaintManager.java:694)
at javax.swing.SystemEventQueueUtilities$ComponentWorkRequest.run(SystemEventQueueUtilities.java:125)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:597)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
Diese Exception hält das Programm nicht auf (es läuft normal weiter, jedoch würde mich schon Interessieren woran das liegt!)
Kann mir jemand dazu Tipps geben?
Hier mal der Code dazu:
- deadSprites ist die Liste mit den zu löschenden Elementen ...
- setDeadSprites: entfernt alle Elemente aus dieser Liste
Kann mir jemand sagen / Tipps geben woran das liegen könnte?
Danke, Luk
Ich schlage mich (wieder) mit einer ConcurrentModException herum ...
Ich weiß, dass diese auftritt wenn ich während einer Schleife, die Elemente einer List über die gelaufen wird, verändere ...
Diese Exception tritt trotz Gegenmaßnahmen auf (d.h. ich erstelle einen neue Collection mit den zu entfernenden Elementen und nach der Schleife rufe ich
Code:
removeAll(...)
Dennoch:
Exception in thread "AWT-EventQueue-0" java.util.ConcurrentModificationException
at java.util.AbstractList$Itr.checkForComodification(AbstractList.java:372)
at java.util.AbstractList$Itr.next(AbstractList.java:343)
at cells_sim.Gamepanel.paintComponent(Gamepanel.java:91)
at javax.swing.JComponent.paint(JComponent.java:1017)
at javax.swing.JComponent.paintToOffscreen(JComponent.java:5112)
at javax.swing.BufferStrategyPaintManager.paint(BufferStrategyPaintManager.java:278)
at javax.swing.RepaintManager.paint(RepaintManager.java:1220)
at javax.swing.JComponent._paintImmediately(JComponent.java:5060)
at javax.swing.JComponent.paintImmediately(JComponent.java:4870)
at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:803)
at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:714)
at javax.swing.RepaintManager.seqPaintDirtyRegions(RepaintManager.java:694)
at javax.swing.SystemEventQueueUtilities$ComponentWorkRequest.run(SystemEventQueueUtilities.java:125)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:597)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
Diese Exception hält das Programm nicht auf (es läuft normal weiter, jedoch würde mich schon Interessieren woran das liegt!)
Kann mir jemand dazu Tipps geben?
Hier mal der Code dazu:
Java:
for (Sprite sp : Admin.getAdmin().getAllSprites()) {
if (sp instanceof Moveable) {
((Moveable) sp).doLogic(delta);
((Moveable) sp).move(delta);
}
}
if (Sprite.getDeadSprites().size() != 0) {
Admin.getAdmin().getAllSprites().removeAll(Sprite.getDeadSprites());
Sprite.setDeadSprites();
}
- deadSprites ist die Liste mit den zu löschenden Elementen ...
- setDeadSprites: entfernt alle Elemente aus dieser Liste
Kann mir jemand sagen / Tipps geben woran das liegen könnte?
Danke, Luk
Zuletzt bearbeitet: