В зависимости от реализации и точного времени, может произойти широкий спектр эффектов:
- вы можете стать "везунчиком", и ничего плохого не случится (это может даже быть распространенным случаем).
- вы можете получить
ConcurrentModificationException
- вы можете не получить исключение и просто потерять одно из обновлений (или оба!)
- вы можете не получить исключение, и одно из обновлений может потеряться в бесконечном цикле (случалось со мной один раз с
HashMap
, маловероятно для простых List
реализаций, но все еще возможно)
- вы можете не получить исключение и ввести неправильное состояние в свой список (например, один элемент вставлен правильно, за которым следует элемент
null
).
Проблема в том, что надежно обнаружение , если возникла проблема, не намного проще, чем , предотвращая возникновение этих проблем, но гораздо менее полезно. Поэтому разумный подход заключается в использовании параллельной структуры данных и / или синхронизации, в зависимости от ситуации.