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
synchronizedou outros mecanismos de sincronização. - Usar iteradores que suportem modificação segura, por exemplo,
ListIteratorpara 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
}