Hvorfor forekommer undtagelser for samtidig modifikation i java?

Indholdsfortegnelse:

Hvorfor forekommer undtagelser for samtidig modifikation i java?
Hvorfor forekommer undtagelser for samtidig modifikation i java?
Anonim

Undtagelsen for ConcurrentModification opstår, når et objekt forsøges ændret samtidigt, når det ikke er tilladt. Denne undtagelse kommer norm alt, når man arbejder med Java Collection-klasser. For eksempel - Det er ikke tilladt for en tråd at ændre en samling, når en anden tråd gentager den.

Hvordan retter jeg undtagelser for samtidig ændring?

Vi kan også undgå undtagelsen med samtidig ændring i et miljø med enkelt gevind. Vi kan bruge fjernemetoden i Iterator til at fjerne objektet fra det underliggende samlingsobjekt. Men i dette tilfælde kan du kun fjerne det samme objekt og ikke noget andet objekt fra listen.

Hvordan forhindrer du samtidige modifikationer på et kort?

brug ConcurrentHashMap. fortsæt med at bruge simple HashMap, men byg et nyt kort på hver modifikation og skift kort bag kulisserne (synkronisering af switch-operationen eller brug AtomicReference)

Hvilken iteratormetode udløser samtidig modifikationsundtagelse?

Hvis vi påberåber en sekvens af metoder på et objekt, der overtræder dets kontrakt, så kaster objektet ConcurrentModificationException. For eksempel: Hvis vi, mens vi itererer over samlingen, forsøger direkte at ændre denne samling, vil den givne fail-fast iterator kaste denne ConcurrentModificationException.

Hvad er den samtidige modifikationsundtagelse i Java-stakoverløb?

Hvis en enkelt tråd udsender en sekvens af metodekald, der overtræder kontrakten for et objekt, kan objektet kaste denne undtagelse. For eksempel, hvis en tråd ændrer en samling direkte, mens den itererer over samlingen med en fejl-hurtig iterator, vil iteratoren kaste denne undtagelse.

Anbefalede: