Sobes.tech
Junior — Middle

Que métodos podem ser usados para evitar a exceção ConcurrentModificationException ao trabalhar com coleções em um ambiente multithread?

sobes.tech IA

Resposta da IA

Para evitar a exceção ConcurrentModificationException ao trabalhar com coleções em um ambiente multithread, você pode usar os seguintes métodos:

  • Utilizar coleções seguras para threads do pacote java.util.concurrent, por exemplo, ConcurrentHashMap, CopyOnWriteArrayList.
  • Sincronizar o acesso à coleção manualmente com blocos synchronized ou outros mecanismos de sincronização.
  • Usar iteradores que suportem modificação segura, por exemplo, ListIterator para listas.
  • Criar cópias das coleções para iteração (por exemplo, via new ArrayList<>(listaOriginal)), para evitar modificar a coleção original durante a iteração.

Exemplo de uso de CopyOnWriteArrayList:

CopyOnWriteArrayList<String> lista = new CopyOnWriteArrayList<>();
lista.add("item1");
for (String item : lista) {
    lista.add("item2"); // não causará ConcurrentModificationException
}