public class ConcurrentModificationExceptionDemo {
Vector<String> v = new Vector<String>();
public ConcurrentModificationExceptionDemo() {
v.add("1");
v.add("2");
v.add("3");
v.add("4");
v.add("5");
v.add("6");
v.add("7");
v.add("8");
v.add("9");
v.add("10");
}
public static void main(String[] args) throws InterruptedException {
ConcurrentModificationExceptionDemo c = new ConcurrentModificationExceptionDemo();
new Thread() {
@Override
public void run() {
for (String str : c.v) {
System.out.println(str);
}
}
}.start();
new Thread() {
@Override
public void run() {
c.v.add("11");
}
}.start();
new Thread() {
@Override
public void run() {
c.v.remove("1");
c.v.remove("3");
c.v.remove("7");
c.v.remove("5");
}
}.start();
Thread.sleep(111);
System.out.println(c.v.size());
}
}
Console:
1
2
3
4
5
Exception in thread "Thread-0" java.util.ConcurrentModificationException
at java.util.Vector$Itr.checkForComodification(Vector.java:1184)
at java.util.Vector$Itr.next(Vector.java:1137)
at com.ConcurrentModificationExceptionDemo$1.run(ConcurrentModificationExceptionDemo.java:26)
7