Sobes.tech
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 synchronized u otros mecanismos de sincronización.
  • Usar iteradores que soporten modificaciones seguras, por ejemplo, ListIterator para 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
}