Maison > Java > javaDidacticiel > le corps du texte

Pourquoi est-ce que j'obtiens une exception ConcurrentModificationException même lorsque j'utilise Synchronized ?

Barbara Streisand
Libérer: 2024-11-06 01:35:02
original
598 Les gens l'ont consulté

Why Do I Get a ConcurrentModificationException Even When Using Synchronized?

ConcurrentModificationException lors de l'utilisation de Synchronized

Malgré la synchronisation de la méthode getAnotherX, vous rencontrez une exception ConcurrentModificationException lors de l'appel de iterator.next(). Pour comprendre pourquoi cela se produit, il est crucial de comprendre la nature de ConcurrentModificationException.

Nature de ConcurrentModificationException

Contrairement à son nom, ConcurrentModificationException n'est pas principalement causée par plusieurs threads. . Cela se produit souvent lors de la modification de la collection itérée dans la boucle d'itération. Voici un exemple :

Iterator iterator = collection.iterator();
while (iterator.hasNext()) {
    Item item = (Item) iterator.next();
    if (item.satisfiesCondition()) {
       collection.remove(item);
    }
}
Copier après la connexion

Dans ce scénario, utiliser iterator.remove() au lieu de collection.remove(item) est essentiel. Cette exception peut également se produire lors de l'ajout à la collection. Malheureusement, il n'existe pas de solution générale à ce cas. Cependant, si vous avez affaire à une liste, vous pouvez utiliser ListIterator, qui possède une méthode add().

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!