(2) sincronizados y volátil realización artística subyacente del principio de programación concurrente Java

La definición e implementación de volátiles

lenguaje de programación Java permite a los hilos variables de acceso compartido, las variables pueden ser compartidos con el fin de garantizar que las actualizaciones precisas y consistentes, exclusiva hilo de bloqueo debe obtener a través de esta variable solo. Si un campo es declarado volátil, asegura modelo de memoria hilo de Java que todas las discusiones ven el valor de esta variable es el mismo.

prefijo de bloqueo

las variables volátiles cuando se modifican para leer y escribir las variables compartidas, JVM envía una cerradura instrucciones de prefijo para el procesador, el procesador de varios núcleos de CPU Lock prefijo de instrucción plantea las dos cosas siguientes
(1) la línea de caché del procesador actual volver a los datos de la memoria del sistema
(2) esta operación se vuelve a escribir en la memoria en otras cachés de datos de la CPU en la dirección de memoria no es válida.
A fin de aumentar la velocidad de procesamiento, la memoria y el procesador no se comunica directamente, pero primero la memoria del sistema para leer los datos de caché interna (L1, L2 o de otro) antes de la operación, pero la operación no es know terminado cuando las escrituras de memoria. Si se declara los volátiles variables de escribir, JVM será enviada a un procesador de bloqueo instrucciones de prefijo , donde esta línea de caché de datos variables está de nuevo a la memoria del sistema escrito. Si otro procesador de valores de caché o viejo, y luego realizar cálculos o problemas de operación. Por lo tanto, en la programación multi-roscado, con el fin de garantizar un valor para cada caché del procesador de la misma, será de coherencia de caché , cada procesador para comprobar si el valor de su propia caché de la fecha por la inhalación de datos que viajan en el autobús, cuando los hallazgos del procesador de línea de caché mismo que corresponde a la dirección de memoria se modifica, la línea de caché actual se define como inactivo del procesador, cuando el procesador de las operaciones de modificación de datos, el sistema volverá a la memoria del procesador de datos de lectura caché.

realización volátil del principio de dos

(1) Bloqueo de las instrucciones de prefijo hacer que el procesador a la memoria caché de escritura posterior
(2) caché de un procesador se vuelve a escribir inválida la memoria caché del procesador causas otra

Principios y Aplicaciones de la aplicación sincronizada

Todos los objetos de Java puede ser utilizado como una cerradura.
(1) Para el método de sincronización normal, la cerradura es la instancia actual del objeto
(2) para el método de sincronización estática, la cerradura es clase de objeto de la clase actual
(3) para el método de sincronización de bloque, el objeto se sincroniza la configuración de bloqueo de los soportes.
Cuando un intento de hilo bloquear el acceso sincronizado, se deben obtener primero una cerradura, la cerradura debe ser puesto en libertad o inicia cuando se produce una excepción.

cabecera del objeto de Java

La cerradura está sincronizada con el avance de la presencia de objetos Java.
El encabezado de la composición de objetos marca y clase de metadatos longitud de dirección o de matriz

marca verbal

El objeto HashCode de almacenamiento por defecto, la edad generacional y la bandera.
32 la tabla de configuración de almacenamiento predeterminada JVM marca de la palabra

estado de bloqueo 25bit 4 bits 1 bit si se trata de bloqueo sesgada indicador de bloqueo 2bit
estado libre de bloqueo objeto hashCode generacional edad del sujeto 0 01

Durante la operación, los datos almacenados en la marca de la palabra variarán con el indicador de bloqueo.
cambio de estado tabla marca de la palabra
Aquí Insertar imagen Descripción
en la máquina virtual 64, una de 64 bits tamaño marca de la palabra, que tabla de estructura de almacenamiento
Aquí Insertar imagen Descripción

sincronizado en la realización del principio de la JVM

JVM basado en la entrada y salida del monitor objetos para poner en práctica el método de sincronización de código y la sincronización de bloque, pero ambas implementaciones no son lo mismo. Sincronización bloque de código usando monitor de entrar y MonitorExit instrucciones, con el método de sincronización se utiliza de otra manera.
instrucción MonitorEnter se compila en la posición de inicio de código de sincronización se inserta en el bloque y MonitorExit se inserta en el extremo de los métodos y excepción, la MonitorEnter JVM para asegurar que cada uno debe tener una MonitorExit emparejado correspondiente. Cualquier objeto tiene un monitor de asociado con él, y cuando un monitor de después de ser sostenido, está bloqueado. Cuando la ejecución del hilo a la instrucción MonitorEnter, intentará adquirir la propiedad del objeto que corresponde al monitor, que está tratando de obtener un objeto de bloqueo.

spinlocks

Se refiere al tiempo en que un hilo para adquirir el bloqueo, si la cerradura ha sido adquirida por otros hilos, a continuación, el hilo esperará a que el ciclo, y luego continuar para determinar si la cerradura se adquiere con éxito, hasta que el bloqueo se adquiere saldrá del bucle.

algoritmo de CAS

Es decir, comparar y swap (comparar y de intercambio) es un bien conocidos algoritmos libre de bloqueo. -Lock libre programación, es decir, cuando no se utiliza sincronización variable de bloqueo entre varios subprocesos, que se sincroniza variable en la ausencia de la rosca está bloqueada, también es llamado de no bloqueo de sincronización (no bloqueando de sincronización). CAS algoritmo implica tres operandos

La necesidad de leer y escribir valor de la memoria V

Un valor de comparación

B tiene la intención de escribir el nuevo valor

Si y sólo si el valor es igual a V A, CAS B con un nuevo valor mediante la actualización del valor de manera atómica V, no va a realizar ninguna operación (comparar y sustituciones son una operación atómica). Normalmente, una operación de giro, es decir, de forma continua reintentos.

Publicado 24 artículos originales · ganado elogios 1 · visitas 549

Supongo que te gusta

Origin blog.csdn.net/qq_45366515/article/details/105116001
Recomendado
Clasificación