ConcurrentModificationException без итератора (неявно или явно). Это правда?

Я прочитал о ConcurrentModificationException. Много информации о получении этого исключения в случае итерации по сборнику и попытка его modoficate.

Мне интересно, могу ли я получить это исключение, не используя итератор?

2 ответа

За исключением итераторов, в стандартных реализациях списков не так много мест, где выбрано это исключение. Метод writeObject уже упоминался в комментарии. Другим является попытка изменить subList который был получен из ArrayList и ArrayList был изменен тем временем:

List<string> list = new ArrayList<string>();
list.add("A");
list.add("B");
list.add("C");

// Obtain the subList
List<string> subList = list.subList(1,2);

// Modify the backing list
list.add("X");

// Try to modify the subList: Causes ConcurrentModificationException
subList.add("Y");
</string></string></string>


Да.

throw new ConcurrentModificationException();

licensed under cc by-sa 3.0 with attribution.