ConcurrentModificationException:

Feb 09 2023
Il metodo principale sta cercando di aggiungere gli interi alla lista. All'interno del metodo principale, avviamo il thread figlio.

Il metodo principale sta cercando di aggiungere gli interi alla lista.

All'interno del metodo principale, avviamo il thread figlio. cioè

t.start()

Al momento, abbiamo 2 thread in corso.

Ora il thread principale tenta di iterare gli elementi dell'elenco e all'interno di questo processo il thread figlio tenta di aggiungere l'elemento 4 all'elenco.

Pertanto, fornisce ConcurrentModificationException.

Come evitare ConcurrentModificationException?

1.Possiamo utilizzare raccolte simultanee come concurrentHashmap e CopyonWriteArrayList che non daranno mai ConcurrentCollectionException.

2.Invece di iterare sulla classe di raccolta possiamo iterare su Array , ma questo ridurrà le prestazioni solo se la dimensione dell'array è troppo grande.

Nota:

Non è obbligatorio che questa eccezione venga generata solo quando un altro thread tenta di modificare un oggetto di raccolta, può accadere se un singolo thread ha uno o l'altro metodo che sta tentando di violare il contratto dell'oggetto.