Maison > Java > javaDidacticiel > ConcurrentModificationException en Java avec des exemples

ConcurrentModificationException en Java avec des exemples

Barbara Streisand
Libérer: 2025-02-07 12:01:13
original
869 Les gens l'ont consulté

ConcurrentModificationException in Java with Examples

Dans l'environnement multithread Java, si la méthode rencontre des modifications simultanées lors de la détection des ressources, une exception peut être lancée. À l'heure actuelle, l'objet est dans un état non modifié. ConcurrentModificationException

Ce qui suit est un exemple d'exception:

ConcurrentModificationException

Cette exception se produit généralement lorsque:
<code class="language-java">Exception in thread "main" java.util.ConcurrentModificationException
    at java.base/java.util.ArrayList$Itr.checkForComodification(ArrayList.java:000)
    at java.base/java.util.ArrayList$Itr.next(ArrayList.java:000)
    at com.journaldev.ConcurrentModificationException.ConcurrentModificationExceptionExample.main(ConcurrentModificationExceptionExample.java:00)</code>
Copier après la connexion

La détection et l'itération des exceptions ne sont pas définies dans la méthode

.
  • Utilisez un drapeau interne nommé
  • , l'itérateur à enveloppe rapide bloque dans la boucle.
  • modCount

algorithme d'exception ConcurrentModificationException Cet algorithme montre comment générer

Exceptions dans un environnement Java. Nous allons écrire du code Java pour explorer plusieurs solutions.

java.util.ConcurrentModificationException

    Démarrez le processus.
  1. Déclarer et importer les packages Java nécessaires.
  2. Déclarer une classe publique.
  3. Déclarer un paramètre de chaîne.
  4. Créez un objet ArrayList.
  5. Créez une nouvelle ArrayList.
  6. Remplissez-vous dans ArrayList.
  7. Déclarer un bloc d'essai.
  8. Liste d'impression.
  9. Déclarer un itérateur.
  10. Utiliser while en boucle pour traverser la valeur suivante.
  11. Ajoutez une valeur pendant l'itération.
  12. Imprimez la liste Array mise à jour.
  13. Utiliser while en boucle pour traverser la valeur suivante.
  14. Catch Exception.
  15. Imprimer les informations d'exception.
  16. Obtenez la valeur.
  17. Arrêtez le processus.

Exception Syntaxe ConcurrentModificationException La syntaxe suivante montre comment générer une exception

dans un environnement Java:

ConcurrentModificationException

La syntaxe ci-dessus montre comment générer
<code class="language-java">// ... (代码片段省略,与原文类似,但使用更简洁的变量名和注释) ...</code>
Copier après la connexion
Exceptions dans un environnement Java.

ConcurrentModificationException

Solution

    Méthode 1: Modifier pendant le processus d'itération
  • Cette méthode modifie directement la collection pendant le processus d'itération. Lorsque l'itérateur à charge rapide échoue, une exception est lancée.

<code class="language-java">for (Iterator<integer> iterator = integers.iterator(); iterator.hasNext();) {
    Integer integer = iterator.next();
    if(integer == 2) {
        iterator.remove(); // 使用迭代器的remove()方法安全地移除元素
    }
}</integer></code>
Copier après la connexion
    Méthode 2: Utilisez les méthodes d'itérateur
  • et et la boucle next() remove()
  • Cette méthode utilise la méthode
. Lorsque l'ensemble est modifié dans un environnement multi-thread, une exception sera lancée.

iterator.next()

Conclusion

ConcurrentModificationException Des exceptions se produisent généralement lorsque la collection est modifiée simultanément. Cet article décrit comment éviter cette exception et fournit des exemples de code Java correspondants. Cette exception peut être effectivement évitée à l'aide de classes de collecte de filetage telles que CopyOnWriteArrayList ou ConcurrentHashMap, ainsi que la méthode remove() de l'itérateur

.

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!

Étiquettes associées:
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
Derniers numéros
Impossible d'installer Java
Depuis 1970-01-01 08:00:00
0
0
0
Java peut-il être utilisé comme backend du Web ?
Depuis 1970-01-01 08:00:00
0
0
0
Installer JAVA
Depuis 1970-01-01 08:00:00
0
0
0
Aide : Données chiffrées JAVA Décryptage PHP
Depuis 1970-01-01 08:00:00
0
0
0
Est-ce en langage Java ?
Depuis 1970-01-01 08:00:00
0
0
0
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal