Des collections synchronisées historiques aux alternatives modernes
Remplacez Vector et Hashtable par des collections adaptées aux besoins réels de mutabilité et de concurrence.
Comparaison de Code
✕ 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);
Un problème avec ce code ? Dites-le nous.
Pourquoi la méthode moderne gagne
Concurrence explicite
Le type choisi indique si le partage est prévu.
Meilleure évolutivité
ConcurrentHashMap évite un verrou unique sur toute la table pour les accès ordinaires.
APIs modernes
S'intègre naturellement aux opérations actuelles sur les collections et les maps concurrentes.
Ancienne Approche
Hashtable
Approche Moderne
ConcurrentHashMap
Depuis JDK
5
Difficulté
Intermédiaire
Support JDK
Des collections synchronisées historiques aux alternatives modernes
Disponible
Largement disponible depuis JDK 5 (septembre 2004)
Comment ça fonctionne
Vector et Hashtable synchronisent chaque opération au moyen d'APIs historiques. Le code moderne devrait normalement utiliser ArrayList ou HashMap pour les données confinées à un thread, et des collections concurrentes spécialisées lorsqu'une mutation partagée est nécessaire.
Documentation Associée
Preuve