ConcurrentModificationException:

Feb 09 2023
O método principal está tentando adicionar os inteiros à lista. Dentro do método main, iniciamos a thread filha.

O método principal está tentando adicionar os inteiros à lista.

Dentro do método main, iniciamos a thread filha. ou seja

t.start()

No momento, temos 2 threads em processo.

Agora a thread principal tentando iterar os elementos da lista e dentro deste processo a thread filha tentando adicionar o elemento 4 na lista.

Assim, dá ConcurrentModificationException.

Como evitar ConcurrentModificationException?

1. Podemos fazer uso de coleções simultâneas como concurrentHashmap e CopyonWriteArrayList, que nunca darão ConcurrentCollectionException.

2. Em vez de iterar sobre a classe de coleção, podemos iterar sobre Array , mas isso só esgotará o desempenho se o tamanho do array for muito grande.

Observação:

Não é obrigatório que esta exceção seja lançada apenas quando outro thread tentar modificar um objeto de coleção. Isso pode acontecer se um único thread tiver algum ou outro método que esteja tentando violar o contrato do objeto.