De coleções sincronizadas legadas para alternativas modernas
Substitua Vector e Hashtable por coleções escolhidas conforme as necessidades reais de mutabilidade e concorrência.
Comparação de Código
✕ Legacy synchronized collection
Hashtable<String, Session> sessions = new Hashtable<>(); sessions.put(id, session);
✓ Concurrent Collections API
ConcurrentMap<String, Session> sessions = new ConcurrentHashMap<>(); sessions.put(id, session);
Viu um problema com este código? Nos avise.
Por que a forma moderna ganha
Concorrência intencional
O tipo escolhido documenta se o compartilhamento é esperado.
Melhor escalabilidade
ConcurrentHashMap evita um único lock para toda a tabela durante o acesso normal.
APIs modernas
Funciona naturalmente com operações atuais de coleções e mapas concorrentes.
Abordagem Antiga
Hashtable
Abordagem Moderna
ConcurrentHashMap
Desde o JDK
5
Dificuldade
Intermediário
Suporte JDK
De coleções sincronizadas legadas para alternativas modernas
Disponível
Amplamente disponível desde o JDK 5 (setembro de 2004)
Como funciona
Vector e Hashtable sincronizam cada operação por meio de APIs legadas. Em geral, código moderno deve usar ArrayList ou HashMap para dados confinados a uma thread e coleções concorrentes específicas quando mutação compartilhada for necessária.
Documentação Relacionada
Prova