Sobes.tech
Junior — Middle

Quelles méthodes peuvent être utilisées pour éviter l'exception ConcurrentModificationException lors de la manipulation de collections dans un environnement multithread ?

sobes.tech IA

Réponse de l'IA

Pour éviter l'exception ConcurrentModificationException lors de la manipulation de collections dans un environnement multithread, vous pouvez utiliser les méthodes suivantes :

  • Utiliser des collections thread-safe du paquet java.util.concurrent, par exemple, ConcurrentHashMap, CopyOnWriteArrayList.
  • Synchroniser manuellement l'accès à la collection avec des blocs synchronized ou d'autres mécanismes de synchronisation.
  • Utiliser des itérateurs supportant la modification sécurisée, par exemple, ListIterator pour les listes.
  • Créer des copies des collections pour l'itération (par exemple, via new ArrayList<>(listeOriginal)), afin d'éviter de modifier la collection d'origine pendant l'itération.

Exemple d'utilisation de CopyOnWriteArrayList :

CopyOnWriteArrayList<String> liste = new CopyOnWriteArrayList<>();
liste.add("item1");
for (String item : liste) {
    liste.add("item2"); // ne provoquera pas ConcurrentModificationException
}