Sobes.tech
Junior — Middle

Podes dar exemplos de estruturas de dados colecionáveis que garantem segurança de thread?

sobes.tech IA

Resposta da IA

No Java, existem várias coleções que garantem segurança em ambientes multithread:

  • Vector — um equivalente seguro para ArrayList, todos os métodos são sincronizados.
  • Hashtable — um equivalente seguro para HashMap.
  • Coleções do pacote java.util.concurrent:
    • ConcurrentHashMap — uma tabela hash segura para múltiplos threads e de alto desempenho.
    • CopyOnWriteArrayList — uma lista segura para múltiplos threads, ideal para cenários com leituras frequentes e modificações raras.
    • BlockingQueue e suas implementações (LinkedBlockingQueue, ArrayBlockingQueue) — filas seguras para múltiplos threads com operações de bloqueio.

Exemplo de uso de ConcurrentHashMap:

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

Essas estruturas permitem trabalhar de forma segura com coleções de múltiplos threads sem necessidade de sincronização externa.