Почему ArrayList не генерирует ConcurrentModificationException при изменении из нескольких потоков?
ConcurrentModificationException: это исключение может быть вызвано методами, которые обнаружили одновременную модификацию объекта, когда такая модификация недопустима.
Выше приведено определение ConcurrentModificationException из javadoc.
Поэтому я пытаюсь проверить код ниже:
final List tickets = new ArrayList(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. Уверен, что несколько потоков обращаются к одному объекту. Но это работает хорошо. Не исключение не выбрасывается. Почему я'