Sobes.tech
Junior — Middle

Que tipos de coleções de dados são destinados a trabalhar de forma segura em um ambiente multithread?

sobes.tech IA

Resposta da IA

Para trabalhar com segurança com coleções num ambiente multithread em Java, existem classes e interfaces especiais do pacote java.util.concurrent e envolventes sincronizadas. Os principais tipos:

  • ConcurrentHashMap — implementação segura para threads de Map com alto desempenho.
  • CopyOnWriteArrayList — lista segura para threads que copia o array interno ao fazer alterações, adequada para leituras frequentes e alterações raras.
  • BlockingQueue (por exemplo, ArrayBlockingQueue, LinkedBlockingQueue) — filas que suportam operações de bloqueio, úteis para organizar a interação entre threads.
  • Collections.synchronizedList/Map/Set — envolventes que tornam as coleções comuns sincronizadas.

Exemplo de uso de ConcurrentHashMap:

ConcurrentHashMap<String, Integer> map = new ConcurrentHashMap<>();
map.put("key", 1);
Integer value = map.get("key");

Estas coleções ajudam a evitar problemas de condições de corrida e garantem funcionamento correto ao acesso simultâneo de múltiplos threads.