集合类并发修改异常案例展示: ArrayList
public class Test {
public static void main(String[] args) {
List<String> list = new ArrayList<>();
for (int i = 0; i <5 ; i++) {
new Thread(()->{
list.add(UUID.randomUUID().toString().substring(0,3));
list.add(UUID.randomUUID().toString().substring(0,3));
list.add(UUID.randomUUID().toString().substring(0,3));
System.out.println(list.toString());
},String.valueOf(i)).start();
}
}
}
发生一次并发修改异常的控制台输出
[56b, 310, 43b, 471, f62, 2b7, 5f5, fad, a84]
Exception in thread "0" java.util.ConcurrentModificationException
[56b, 310, 43b, 471, f62, 2b7, 5f5, fad, a84, ae5]
[56b, 310, 43b, 471, f62, 2b7, 5f5, fad, a84, ae5, 6f7, da2]
[56b, 310, 43b, 471, f62, 2b7, 5f5, fad, a84, ae5, 6f7, da2, d5a, 810]
at java.util.ArrayList$Itr.checkForComodification(ArrayList.java:909)
at java.util.ArrayList$Itr.next(ArrayList.java:859)
at java.util.AbstractCollection.toString(AbstractCollection.java:461)
at arrayList_no_security.Test.lambda$main$0(Test.java:13)
at java.lang.Thread.run(Thread.java:748)