Junior — Middle
¿Qué métodos se pueden usar para evitar la excepción ConcurrentModificationException al trabajar con colecciones en un entorno multihilo?
sobes.tech AI
Respuesta de la IA
Para evitar la excepción ConcurrentModificationException al trabajar con colecciones en un entorno multihilo, se pueden usar los siguientes métodos:
- Utilizar colecciones seguras para hilos del paquete
java.util.concurrent, por ejemplo,ConcurrentHashMap,CopyOnWriteArrayList. - Sincronizar el acceso a la colección manualmente con bloques
synchronizedu otros mecanismos de sincronización. - Usar iteradores que soporten modificaciones seguras, por ejemplo,
ListIteratorpara listas. - Crear copias de las colecciones para iterar sobre ellas (por ejemplo, mediante
new ArrayList<>(listaOriginal)), para evitar modificar la colección original durante la iteración.
Ejemplo de uso de CopyOnWriteArrayList:
CopyOnWriteArrayList<String> lista = new CopyOnWriteArrayList<>();
lista.add("item1");
for (String item : lista) {
lista.add("item2"); // no causará ConcurrentModificationException
}