Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.java.programmer > #26827

Odd ConcurrentModificationException

Path csiph.com!usenet.pasdenom.info!aioe.org!eternal-september.org!feeder.eternal-september.org!news.eternal-september.org!.POSTED!not-for-mail
From Knute Johnson <september@knutejohnson.com>
Newsgroups comp.lang.java.programmer
Subject Odd ConcurrentModificationException
Date Tue, 10 Dec 2013 09:41:27 -0800
Organization A noiseless patient Spider
Lines 87
Message-ID <l87jo5$5vt$1@dont-email.me> (permalink)
Mime-Version 1.0
Content-Type text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding 7bit
Injection-Date Tue, 10 Dec 2013 17:41:25 +0000 (UTC)
Injection-Info mx05.eternal-september.org; posting-host="aba33539224e5c782fe0c4053f7756fd"; logging-data="6141"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX19CyiOGugn77cEAsNPHUzGx"
User-Agent Mozilla/5.0 (Windows NT 6.3; WOW64; rv:24.0) Gecko/20100101 Thunderbird/24.1.1
Cancel-Lock sha1:oji8A14TfOrsKY4MdltlBFUf9v0=
Xref csiph.com comp.lang.java.programmer:26827

Show key headers only | View raw


I'm getting an odd ConcurrentModificationException in a MouseListener 
when I try to remove an element from an ArrayList.  The really strange 
thing about it is that the exception occurs every other time I call 
remove().  The ArrayList is only accessed on the EDT and I tried 
wrapping it in Collections.synchronizedList but that made no difference.

The ArrayList variable is boxes and the type is DisplayBox, an extended 
JComponent.  The error shows the line number of the for instruction but 
actually fails on the remove(box) call.

Any ideas on where to start looking?

Thanks,

knute...


     public void mousePressed(MouseEvent me) {
         if (me.getButton() == MouseEvent.BUTTON1) {
             System.out.println("Mouse1 Down");
             mouseDown = true;
             startX = me.getX();
             startY = me.getY();
         } else if (me.getButton() == MouseEvent.BUTTON3) {
             System.out.println("Mouse3 Down");
             for (DisplayBox box : boxes) {
                 if (box.getBounds().contains(me.getX(),me.getY())) {
                     remove(box);
                     boxes.remove(box);
                 }
             }
             repaint();
         }
     }

Mouse3 Down
Exception in thread "AWT-EventQueue-0" 
java.util.ConcurrentModificationException

         at java.util.ArrayList$Itr.checkForComodification(Unknown Source)
         at java.util.ArrayList$Itr.next(Unknown Source)
         at 
com.knutejohnson.stationcasinos.backgroundgenerator.Yard$1.mousePress
ed(Yard.java:47)
         at java.awt.Component.processMouseEvent(Unknown Source)
         at javax.swing.JComponent.processMouseEvent(Unknown Source)
         at java.awt.Component.processEvent(Unknown Source)
         at java.awt.Container.processEvent(Unknown Source)
         at java.awt.Component.dispatchEventImpl(Unknown Source)
         at java.awt.Container.dispatchEventImpl(Unknown Source)
         at java.awt.Component.dispatchEvent(Unknown Source)
         at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown 
Source)
         at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
         at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
         at java.awt.Container.dispatchEventImpl(Unknown Source)
         at java.awt.Window.dispatchEventImpl(Unknown Source)
         at java.awt.Component.dispatchEvent(Unknown Source)
         at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
         at java.awt.EventQueue.access$200(Unknown Source)
         at java.awt.EventQueue$3.run(Unknown Source)
         at java.awt.EventQueue$3.run(Unknown Source)
         at java.security.AccessController.doPrivileged(Native Method)
         at 
java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Sour
ce)
         at 
java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Sour
ce)
         at java.awt.EventQueue$4.run(Unknown Source)
         at java.awt.EventQueue$4.run(Unknown Source)
         at java.security.AccessController.doPrivileged(Native Method)
         at 
java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Sour
ce)
         at java.awt.EventQueue.dispatchEvent(Unknown Source)
         at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown 
Source)
         at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
         at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown 
Source)
         at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
         at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
         at java.awt.EventDispatchThread.run(Unknown Source)
-- 

Knute Johnson

Back to comp.lang.java.programmer | Previous | Next — Next in thread | Find similar | Unroll thread


Thread

Odd ConcurrentModificationException Knute Johnson <september@knutejohnson.com> - 2013-12-10 09:41 -0800
  Re: Odd ConcurrentModificationException Eric Sosman <esosman@comcast-dot-net.invalid> - 2013-12-10 14:22 -0500
  Re: Odd ConcurrentModificationException Knute Johnson <september@knutejohnson.com> - 2013-12-10 13:10 -0800

csiph-web