ConcurrentModificationException:

Feb 09 2023
Основной метод пытается добавить целые числа в список. В основном методе мы запускаем дочерний поток.

Основной метод пытается добавить целые числа в список.

В основном методе мы запускаем дочерний поток. то есть

т.старт()

В настоящее время у нас есть 2 потока в процессе.

Теперь основной поток пытается перебрать элементы списка, а в рамках этого процесса дочерний поток пытается добавить элемент 4 в список.

Таким образом, он дает ConcurrentModificationException.

Как избежать исключения ConcurrentModificationException?

1. Мы можем использовать параллельные коллекции, такие как concurrentHashmap и CopyonWriteArrayList, которые никогда не будут давать ConcurrentCollectionException.

2. Вместо итерации по классу коллекции мы можем выполнять итерацию по массиву, но это приведет к снижению производительности только в том случае, если размер массива слишком велик.

Примечание:

Не обязательно, чтобы это исключение было вызвано только тогда, когда другой поток пытается изменить объект коллекции. Это может произойти, если у одного потока есть тот или иной метод, который пытается нарушить контракт объекта.