Varför förekommer undantag för samtidig modifiering i java?

Innehållsförteckning:

Varför förekommer undantag för samtidig modifiering i java?
Varför förekommer undantag för samtidig modifiering i java?
Anonim

Undantaget för ConcurrentModification uppstår när ett objekt försöks ändras samtidigt när det inte är tillåtet. Detta undantag kommer vanligtvis när man arbetar med Java Collection-klasser. Till exempel - Det är inte tillåtet för en tråd att ändra en samling när någon annan tråd itererar över den.

Hur fixar jag undantag för samtidiga ändringar?

Vi kan också undvika Concurrent Modification Exception i en enda trådad miljö. Vi kan använda borttagningsmetoden i Iterator för att ta bort objektet från det underliggande samlingsobjektet. Men i det här fallet kan du bara ta bort samma objekt och inte något annat objekt från listan.

Hur förhindrar du samtidiga modifieringsundantag på en karta?

använd ConcurrentHashMap. fortsätt använda enkel HashMap, men bygg en ny karta på varje modifiering och byt kartor bakom kulisserna (synkronisera växlingsoperationen eller använd AtomicReference)

Vilken metod för iterator ger undantag för samtidiga ändringar?

Om vi anropar en sekvens av metoder på ett objekt som bryter mot dess kontrakt, så kastar objektet ConcurrentModificationException. Till exempel: om vi när vi itererar över samlingen direkt försöker modifiera den samlingen, kommer den givna fail-fast iterator att kasta detta ConcurrentModificationException.

Vilket är undantaget för samtidig modifiering i Java-stackspill?

Om en enskild tråd utfärdar en sekvens av metodanrop som bryter mot kontraktet för ett objekt, kan objektet kasta detta undantag. Till exempel, om en tråd modifierar en samling direkt medan den itererar över samlingen med en felsnabb iterator, kommer iteratorn att kasta detta undantag.

Rekommenderad: