Dalle collezioni sincronizzate legacy alle alternative moderne
Sostituisci Vector e Hashtable con collezioni scelte in base alle effettive esigenze di mutabilità e concorrenza.
Confronto Codice
✕ 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);
Vedi un problema con questo codice? Faccelo sapere.
Perché vince l'approccio moderno
Concorrenza intenzionale
Il tipo scelto documenta se è prevista la condivisione.
Migliore scalabilità
ConcurrentHashMap evita un unico lock sull'intera tabella per gli accessi normali.
API moderne
Funziona naturalmente con le attuali operazioni su collezioni e mappe concorrenti.
Approccio Vecchio
Hashtable
Approccio Moderno
ConcurrentHashMap
Dal JDK
5
Difficoltà
Intermedio
Supporto JDK
Dalle collezioni sincronizzate legacy alle alternative moderne
Disponibile
Ampiamente disponibile dal JDK 5 (settembre 2004)
Come funziona
Vector e Hashtable sincronizzano ogni operazione tramite API legacy. Il codice moderno dovrebbe normalmente usare ArrayList o HashMap per dati confinati a un thread e collezioni concorrenti dedicate quando è necessaria una mutazione condivisa.
Documentazione Correlata
Prova