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
本文通过一个具体的Java示例,展示了当多个线程同时访问并修改集合时如何触发并发修改异常(ConcurrentModificationException)。示例中创建了三个线程分别用于遍历、添加和删除Vector集合中的元素。
517

被折叠的 条评论
为什么被折叠?



