Necesita una explicación simple de cómo funciona el "bloqueo de bandas" con ConcurrentHashMap

Niebla de pensamiento:

De acuerdo con Java Concurrency in Practice, el capítulo 11.4.3 dice:

La división de bloqueo a veces se puede extender al bloqueo de particiones en un conjunto de objetos independientes de tamaño variable, en cuyo caso se denomina división de bloqueo. Por ejemplo, la implementación de ConcurrentHashMap usa una matriz de 16 bloqueos, cada uno de los cuales protege 1/16 de los cubos de hash; El cubo N está protegido por un candado N mod 16.

Sigo teniendo problemas para comprender y visualizar el mecanismo de franjas y cubos de bloqueo. ¿Alguien puede explicar esto con buenas palabras de comprensión :)

Gracias por adelantado.

Zim-Zam O'Pootertoot:

El mapa hash se construye en una matriz, donde la función hash asigna un objeto a un elemento en la matriz subyacente. Digamos que la matriz subyacente tiene 1024 elementos; ConcurrentHashMap en realidad lo convierte en 16 submatrices diferentes de 64 elementos, p. Ej., {0, 63}, {64, 127}, etc. Cada submatriz tiene su propio bloqueo, por lo que modificar el La submatriz {0, 63} no afecta la submatriz {64, 127}: un subproceso puede escribir en la primera submatriz mientras que otro subproceso escribe en la segunda submatriz.

Este artículo se recopila de Internet, indique la fuente cuando se vuelva a imprimir.

En caso de infracción, por favor [email protected] Eliminar

Editado en
0

Déjame decir algunas palabras

0Comentarios
Iniciar sesiónRevisión de participación posterior

Artículos relacionados

Necesita una explicación de cómo funciona la función specgram en python (matplotlib - funciones compatibles con MATLAB)

Necesita una explicación de cómo funciona la función specgram en python (matplotlib - funciones compatibles con MATLAB)

Cree una tabla de datos con SQL y PHP: necesita una explicación simple

Necesita una explicación sobre el código "Desde la vista" de Maatwebsite Excel

Necesita una explicación de algunos términos en el código Python

Necesita una explicación para el siguiente código de Python

Necesita una explicación sobre el siguiente tipo de código Javascript

Necesita una explicación de una línea en C

Necesita una explicación sobre cómo se crea el objeto de interfaz en java-8 para lambda

Necesito una explicación sobre cómo funciona el enésimo de tipo

Necesita una explicación sobre cómo funciona pandas.drop aquí

El problema nulo necesita una explicación

Necesita explicación de una expresión

Se necesita una explicación de CallSite

sql de xquery necesita una explicación

Necesita entender cómo funciona el método list append() con una lista multidimensional

El nombre de la variable de estructura con el prefijo. (Punto) necesita explicación

Necesita una explicación sobre el concepto de velocidad de datos en Simulink

Necesita una explicación sobre el concepto de velocidad de datos en Simulink

Necesita una explicación para el análisis de la complejidad del tiempo del programa iterativo

Bucle "Para el elemento de la lista", se necesita una explicación

Necesita una aclaración con el siguiente código

Necesita una aclaración sobre cómo funciona el método str.join ()

Necesita entender cómo funciona el ciclo for en el código de The Color Flipper a continuación

Necesita una explicación específica de parte de un código de expresiones regulares

Se necesita una explicación del código de programación por lotes

Necesita una buena explicación de este pequeño código de Python

Cómo funciona el mismo espacio de nombres en una única solución con diferentes proyectos

¿Cómo funciona el socket del servidor con más de una acumulación?

TOP Lista

CalienteEtiquetas

Archivo