Зачем проверять одновременные изменения при повторении небезопасных для потоков коллекций? - PullRequest
2 голосов
/ 26 мая 2020

Отказоустойчивый механизм проверки одновременной модификации в синхронизированных коллекциях является разумным, так как эти коллекции считаются поточно-ориентированными в многопоточной среде и, следовательно, они должны знать о параллельной модификации.

Но я не понимаю, почему эти небезопасные для потоков коллекции, такие как ArrayList, которые должны работать в однопоточной среде, также должны знать о параллельной модификации в итерации?

Заранее благодарим за ответ!

1 Ответ

8 голосов
/ 26 мая 2020

Не путайте «concurrent» в «concurrent модификации» как относящееся только к многопоточности.

Вы также можете получить ConcurrentModificationException в однопоточном коде:

List<String> list = new ArrayList<>();
list.add("");
Iterator<String> it = list.iterator();
list.add("");
it.next(); // ConcurrentModificationException
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...