mapa del tesoro, un montón de problemas causados por bloqueos ligeros desconcertado (sincronizado actualización cerradura) ~


fondo

Echar un vistazo al principio de la actualización sincronizada, los resultados se clavaron tal mapa del tesoro:
Aquí Insertar imagen Descripción
Hay una desconcertante, es el último de bloqueo se libera de peso ligero, ¿por qué despertar otros hilos aquí? Se expande a muchos lugares de bloqueo de peso pesado después de la liberación del bloqueo fracasó aquí?

Por último, aprender a dibujar la figura humana
la URL del blog dios: https: //blog.dreamtobe.cn/
Firma blog:

Voy a tener una vida sin remordimientos, en el futuro, tenemos que hacer algo.
Mi vida no va a lamentar en el futuro, debemos tener éxito.

Por desgracia,

La figura parece ligero cuando está polarizado bloqueo el paso de bloqueo es menor propietario del bloqueo puntero al objeto, pero creo que lo más importante es que los tres pasos etiquetarlo.

Cuando hilo 1 de liberación, por qué, cuando el fracaso es despertar esos hilos que ser suspendido?

Porque si no funciona, entonces bloqueo se ha inflado.

Cuando un hilo conductor, el hilo 2 entra en juego, esta vez de reemplazar el hilo 2 cuando los cas puntero fallan, por lo que la operación de giro de rosca 2, ya en este momento no alcance un cierto éxito, el hilo 2, la expansión hará que el tope a tope peso pesado , que puede en sí (rosca 2) será suspendido.

Cuando el hilo 1 de liberación, se ha ampliado en una cerradura de peso pesado, mientras el bloqueo de peso pesado dará lugar a la palabra marca apuntando monitor de bloqueo de peso pesado, cambiar el valor del objeto de bloqueo palabra marca, así que cuando el hilo 1 liberado por intentar operar cas marca denominativa desplazados cambió de nuevo a la marca denominativa objeto fallado, por lo que necesitan para despertar de nuevo para competir en la cerradura de peso pesado.

Pero creo que puede ser una excepción, si el proceso de giro de rosca 2 (todavía no alcanza el número máximo de giros) en este momento no se expande en una cerradura de peso pesado, así que esta vez si el hilo 1 se libera, entonces se puede liberar con éxito y girar el hilo 2 es también todavía no se ha suspendido, por lo que no se despiertan rosca 2

También como un largo tiempo, finalmente encontró la respuesta en el libro todavía está en.

En el "Java arte programación concurrente" en la página 15 del libro - un bloqueo ligero y expansión de un diagrama de flujo, tiene la respuesta

diagrama de flujo ampliado

cerradura de peso ligero

Aquí Insertar imagen Descripción

bloqueo sesgada
Aquí Insertar imagen Descripción

¿Por qué copiar la palabra marca?

Realmente muy simple, porque no quieren sincronizar juntos en el bloqueo y desbloqueo de este operativo subyacente.

Después de la terminación de la palabra copia objeto marca, JVM operación de conmutación paso puntero hecho, es decir, un primer contenido de naranja marco rectangular del proceso.
La marca objeto en el puntero de bloqueo ligero al registro de bloqueo puntero de pila se encuentra, es para permitir que otros hilos sepan que el monitor objeto ya está en uso.
registro de bloqueo en la marca objeto puntero a la función del dueño es hacerse cargo de la operación en el proceso, identificando qué objeto está bloqueado.

Resumido por cas

https://www.bbsmax.com/A/A2dmM7lbde/

Pregunta? cerradura de peso ligero en el final es más de dos hilos o dos hilos compiten por la misma cerradura de bloqueo se expande peso pesado?

Antes de buscar el blog, más que una mención 如果有两条以上的线程争用同一个锁,那轻量级锁就不再有效,要膨胀为重量级锁,, pero la imagen de arriba para ver dos hilos puede ser identificado como una expansión de bloqueo de peso pesado.

Confirmar los libros en el "conocimiento profundo de la máquina virtual de Java," es por lo que yo, así que supongo derecha, más como un blog escrito en exactamente las mismas palabras, en su mayoría copiado del libro terminado.

Si hay más de dos hilos que compiten por el mismo bloqueo, bloqueo de peso ligero que ya no es válida, se ampliará la cerradura de peso pesado, el estado de bloqueo del valor del indicador se convierte en "10", marca de la palabra se almacena en señalar peso pesado (mutex) puntero.

Ver el blog y me gusta la confusión, muchas personas apoyan la opinión, de manera temporal referencias vienen, como referencia, porque realmente no he encontrado otra respuesta mejor de hecho puede ser ambigua, aquí, no en este callejón sin salida a.

cerradura de peso ligero que hay competencia, pero el grado de competencia es muy ligero, por lo general de dos hilos para las mismas operaciones de bloqueo se tambalearse, o esperar un poco (giro), otros comunicados de rosca de la cerradura. Pero cuando además de la rosca es el dueño del bloqueo de bucle más de un determinado número de veces, o un hilo que mantiene un bloqueo, un giro, mientras que otra tercera visita, bloqueo de peso pesado de la inflación bloqueo ligero, el peso pesado de bloqueo los hilos se bloquean, impidiendo la inactividad de la CPU.

fuente original: https: //blog.csdn.net/choukekai/article/details/63688332

Por último, aquí para decir bastante bueno重量级锁使除了拥有锁的线程以外的线程都阻塞,防止CPU空转。

resumen:

Desde mi conocimiento es de hecho dos, pero los libros de texto dicen que debe ser justificada, por el momento, entendida como: tres hilos, uno que mantiene un bloqueo, un spin-larga (¿por qué no se tuvo en cuenta el giro adaptativo que, silencio), el tercer hilo, y esta vez la máquina virtual para informarse, esta situación está obligado a tener un giro desde hace mucho tiempo, por lo que el juez debe ampliarse, y sabemos que no es la manera giro n veces (por defecto 10 veces) no obtienen un bloqueo, a dejar de fumar? Para ello es proteger la cerradura.

En el final, cuando la cerradura peso pesado expansión?

  1. Giro n veces (por defecto 10 veces, hay jdk1.6 de adaptación después de un bloqueo de bucle) no pueden obtener un bloqueo, esta vez no debe haber dos hilos
  2. Tres hilos, uno que mantiene un bloqueo, un giro por un largo tiempo, el tercer hilo, y se expande este momento
  3. tiempo de bloqueo de seguridad ligero, este debe ser estrictamente y en el artículo 1 de la misma, ya que esta situación es la siguiente: si la corriente de apertura del hilo 1, el hilo 2 durante la ejecución del hilo 1, el giro n veces fracasó, el propio delta, y para el bloqueo de peso pesado de expansión debido a la expansión de una cerradura de peso pesado, por lo que los puntos de palabras marca a la cerradura puntero del monitor de peso pesado, hilo 1 CAS repalced marca de marca de la palabra palabra de sustitución se opondrá cuando el fracaso de tantos el blog dijo después de que el bloqueo de peso pesado expansión fallido, de hecho, no es correcto, antes de que este se ha expandido como un bloqueo de peso pesado, por lo que el fallo de emisión . Así que en esencia aquí, o hilar 2 fallo de causa hinchazón, que es el primero.

¿Cuál es el punto de la seguridad global?

La seguridad global exige el punto de liberación en el tiempo tienden a cierre de liberación, lo que es el punto de la seguridad global?

En este momento no hay ningún código de bytes de ser ejecutado

En este punto, no se ejecuta ningún código

Mundial de Centros de Seguridad (punto seguro): punto de la seguridad global de la comprensión implicará algún conocimiento del lenguaje C subyacente, sencilla de entender SafePoint aquí es la ubicación de un código Java roscado puede suspender la ejecución.
https://www.jianshu.com/p/0f31a14373a2

Ah no es muy comprensiva, que literalmente significa comprender, recordar que ~

suplementos

Si la actualización falla, compruebe primero el objeto de puntos de marca de la palabra al marco de pila para el subproceso actual, si representa es que se trata de una re-entrada de bloqueo, a continuación, añadir a la pila para el subproceso actual en una marca de la palabra desplazada es nulo, puntos de campo de referencia de objetos objeto de bloqueo bloqueo de registro, para contar el número de re-entrada, como se muestra a continuación. Si el objetivo de inspección marca de la palabra no apunta a marco de pila del subproceso actual, el proceso pasa a la etapa 6;

Aquí Insertar imagen Descripción

https://www.loongzee.com/2019/04/25/JavaSynchronized_2/

Suplementos Resumen: Añadido por volver a reemplazar

Publicados 545 artículos originales · ganado elogios 3209 · Vistas 2,56 millones +

Supongo que te gusta

Origin blog.csdn.net/dataiyangu/article/details/104979817
Recomendado
Clasificación