Maison >Java >javaDidacticiel >Pourquoi est-ce que je reçois ConcurrentModificationException dans une méthode synchronisée ?
ConcurrentModificationException dans la méthode synchronisée : démêler la confusion
Dans une méthode synchronisée comme celle fournie, l'exception ConcurrentModificationException peut survenir même avec l'exception synchronisée modificateur. Cette exception résulte généralement de la modification de la collection en cours d'itération dans la boucle d'itération.
Le problème ici est que la synchronisation de la méthode ne garantit pas que la collection ne sera pas modifiée pendant l'itération. Pour éviter cette exception, il est impératif d'éviter de modifier la collection lors de l'itération.
Un exemple typique d'extrait de code qui déclencherait cette exception est :
Iterator iterator = collection.iterator(); while (iterator.hasNext()) { Item item = (Item) iterator.next(); if (item.satisfiesCondition()) { collection.remove(item); } }
Au lieu de cela, le code doit utiliser la méthode iterator.remove() pour supprimer des éléments de la collection pendant l'itération. Si des ajouts à la collection sont nécessaires, le sous-type ListIterator peut être utilisé car il fournit une méthode add() lors du traitement d'une liste.
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!