Los principios y diferencias entre HashMap, HashTable y ConcurrentHashMap
ConcurrentHashMap utiliza tecnología de segmentación de bloqueo para garantizar la seguridad de los subprocesos.
Tecnología de segmentación de bloqueo: primero almacene los datos en segmentos y luego asigne un bloqueo a cada segmento de datos. Cuando un subproceso ocupa un candado para acceder a un segmento de datos, otros subprocesos también pueden acceder a los datos de otros segmentos.
ConcurrentHashMap proporciona un mecanismo de bloqueo diferente al de Hashtable y SynchronizedMap. El mecanismo de bloqueo utilizado en Hashtable es bloquear toda la tabla hash a la vez, de modo que solo un subproceso pueda operar al mismo tiempo; sin embargo, en ConcurrentHashMap, solo se puede bloquear un depósito a la vez;
La razón por la que los contenedores de tablas hash son ineficientes en entornos concurrentes altamente conflictivos es que todos los subprocesos que acceden a la tabla hash deben competir por el mismo bloqueo. Si hay varios bloqueos en el contenedor y cada bloqueo se usa para bloquear parte de los datos en el contenedor, cuando varios subprocesos accedan a datos en diferentes segmentos de datos en el contenedor, no habrá competencia de bloqueos entre subprocesos, lo que puede efectivamente mejorar la eficiencia del acceso concurrente. Esta es la técnica de segmentación de bloqueos utilizada por ConcurrentHashMap. Primero, los datos se almacenan en segmentos de datos y luego se asigna un bloqueo a cada segmento de datos. Cuando un subproceso ocupa un candado para acceder a un segmento de datos, otros subprocesos también pueden acceder a los datos de otros segmentos.