ConcurrentModificationException:当对象的并发修改不被允许时,可能会抛出该异常。
上述是来自javadoc的ConcurrentModificationException定义。
因此,我尝试测试以下代码:
final List<String> tickets = new ArrayList<String>(100000);
for (int i = 0; i < 100000; i++) {
tickets.add("ticket NO," + i);
}
for (int i = 0; i < 10; i++) {
Thread salethread = new Thread() {
public void run() {
while (tickets.size() > 0) {
tickets.remove(0);
System.out.println(Thread.currentThread().getId()+"Remove 0");
}
}
};
salethread.start();
}
这段代码很简单。 10个线程从ArrayList对象中删除元素。 虽然多个线程访问同一个对象,但它可以正常运行,没有抛出异常。 为什么呢?