Crouchez wrote:
Concurrent means multiple threads though doesn't it?
Lew wrote:
<http://java.sun.com/javase/6/docs/api/java/util/ConcurrentModificationException.html>
Note that this exception does not always indicate that an object has
been
concurrently modified by a /different/ thread.
(emphasis in the original)
<sscce>
/* ConcurrentModifier
* $Id$
*/
package testit;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
/** Cause a <code>ConcurrentModificationException</code>.
*/
public class ConcurrentModifier
{
/** Cause a <code>ConcurrentModificationException</code>.
* @param args <code>String []</code> program arguments.
*/
public static void main( String [] args)
{
List <String> strangs = new ArrayList <String> ();
strangs.add( "first" );
strangs.add( "second" );
strangs.add( "remove" );
strangs.add( "last" );
String val;
Iterator <String> iter = strangs.iterator();
if ( iter.hasNext() )
{
val = iter.next();
System.out.println( val );
System.out.println( "" );
}
if ( iter.hasNext() )
{
if ( strangs.remove( "remove" ) )
{
System.out.println( "Removed" );
}
else
{
System.out.println( "Not removed" );
}
System.out.println( "" );
}
while ( iter.hasNext() )
{
val = iter.next(); // line 50
System.out.println( val );
System.out.println( "" );
}
System.out.println( "out of elements" );
}
}
</sscce>
Output:
first
Removed
Exception in thread "main" java.util.ConcurrentModificationException
at
java.util.AbstractList$Itr.checkForComodification(AbstractList.java:372)
at java.util.AbstractList$Itr.next(AbstractList.java:343)
at testit.ConcurrentModifier.main(ConcurrentModifier.java:50)
--
Lew
the iterator.. doh