Почему 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. Уверен, что несколько потоков обращаются к одному объекту. Но это работает хорошо. Не исключение не выбрасывается. Почему я'

Ответы на вопрос(5)

Ваш ответ на вопрос