La Red de Conocimientos Pedagógicos - Currículum vitae - ¿Cuál es la diferencia entre hashmap y concurrenthashmap?

¿Cuál es la diferencia entre hashmap y concurrenthashmap?

La diferencia entre hashmap y concurrenthashmap es la siguiente:

HashMap no es seguro para subprocesos, mientras que ConcurrentHashMap sí lo es.

ConcurrentHashMap utiliza tecnología de segmentación de bloqueo para segmentar todo el depósito Hash, es decir, esta gran matriz se divide en varios segmentos pequeños y cada segmento pequeño tiene El bloqueo existe.

Luego, al insertar elementos, primero debe encontrar qué segmento se debe insertar y luego insertarlo en este segmento, y también debe obtener el bloqueo de segmento.

ConcurrentHashMap hace que la granularidad del bloqueo sea más refinada y el rendimiento de concurrencia mejor.

HashMap:

La implementación de matriz subyacente + lista vinculada puede almacenar claves nulas y valores nulos, y no es segura para subprocesos.

El tamaño inicial es 16, expansión: newsize = oldsize*2, el tamaño debe ser la enésima potencia de 2.

La expansión es para todo el mapa. Cada vez que se expande, las ubicaciones de almacenamiento de los elementos en la matriz original se recalculan y se reinsertan.

Se juzga si la expansión debe realizarse después de insertar el elemento, lo que puede resultar en una expansión no válida (si la expansión se realiza después de la inserción, si no se inserta nuevamente, se producirá una expansión no válida).

ConcurrentHashMap:

La capa inferior se implementa mediante una matriz segmentada + lista vinculada, que es segura para subprocesos.

Al dividir todo el mapa en N segmentos, se puede proporcionar la misma seguridad para subprocesos, pero la eficiencia aumenta N veces y el aumento predeterminado es 16 veces. (La operación de lectura no está bloqueada. Dado que la variable de valor de HashEntry es volátil, se puede leer el último valor).

La sincronización de Hashtable es para toda la tabla Hash, es decir, toda la tabla se bloquea cada vez para que el hilo pueda monopolizarla. ConcurrentHashMap permite realizar múltiples operaciones de modificación al mismo tiempo. el uso de tecnología de separación de cerraduras.