Repaso
English
Java CoreIntermedioJV-25

¿Qué es cierto sobre HashMap, Hashtable y ConcurrentHashMap?

Opciones

  1. Los tres son igual de seguros y rápidos con muchos threads
  2. HashMap no es seguro; Hashtable bloquea todo; ConcurrentHashMap bloquea menos (Opción correcta)
  3. HashMap es el único que admite claves null, y es thread-safe
  4. ConcurrentHashMap siempre es más lento que Hashtable

Respuesta

HashMap no es thread-safe; Hashtable bloquea todo el map (antiguo, lento); ConcurrentHashMap admite muchos threads con locks de grano fino

Por qué

HashMap es rápido pero inseguro si varios threads lo modifican a la vez (actualizaciones perdidas, incluso bucles infinitos en versiones antiguas).

Hashtable está sincronizado en cada método, así que solo un thread trabaja a la vez. Es legacy; evítalo.

ConcurrentHashMap está pensado para concurrencia: las lecturas no bloquean y las escrituras bloquean solo partes pequeñas. También ofrece operaciones atómicas como computeIfAbsent y merge. No admite claves ni valores null.

Recuerda

Map compartido entre threads: ConcurrentHashMap.

Términos clave

Practica esta pregunta en Repaso