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
synchronizedou d'autres mécanismes de synchronisation. - Utiliser des itérateurs supportant la modification sécurisée, par exemple,
ListIteratorpour 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
}