Von veralteten synchronisierten Collections zu modernen Alternativen
Vector und Hashtable durch Collections ersetzen, die den tatsächlichen Anforderungen an Veränderbarkeit und Nebenläufigkeit entsprechen.
Code-Vergleich
✕ 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);
Problem mit diesem Code entdeckt? Sag uns Bescheid.
Warum der moderne Weg gewinnt
Bewusste Nebenläufigkeit
Der gewählte Typ dokumentiert, ob eine gemeinsame Nutzung vorgesehen ist.
Bessere Skalierbarkeit
ConcurrentHashMap vermeidet bei normalen Zugriffen eine einzige Sperre für die gesamte Tabelle.
Moderne APIs
Funktioniert nahtlos mit aktuellen Collection- und ConcurrentMap-Operationen.
Alter Ansatz
Hashtable
Moderner Ansatz
ConcurrentHashMap
Seit JDK
5
Schwierigkeitsgrad
Fortgeschritten
JDK-Unterstützung
Von veralteten synchronisierten Collections zu modernen Alternativen
Verfügbar
Weitgehend verfügbar seit JDK 5 (September 2004)
Wie es funktioniert
Vector und Hashtable synchronisieren jede Operation über veraltete APIs. Moderner Code sollte für Thread-lokale Daten normalerweise ArrayList oder HashMap und bei gemeinsam genutzten Mutationen speziell dafür entwickelte nebenläufige Collections verwenden.
Zugehörige Dokumentation
Beweis