llamada Sincronizado dentro de otro Sincronizado

Sí, puede sincronizar varias veces en el mismo objeto sin punto muerto, funciona como bloqueo reentrante.

En cuanto a la salida. El primero es una salida secuencial simple, y la sincronización no lo afecta. El segundo producirá la salida esperada, ya que el otro subproceso tendrá que esperar a que el primero libere el objeto de bloqueo.

EDITAR, el orden de línea1 y línea4 no está determinado, ya que no hay sincronización antes. Sin embargo, la línea2 y la línea3 siempre van después de la línea4, ya que el segundo hilo no puede comenzar a imprimir la línea1 hasta que el primero abandone el bloque de sincronización del método1.

Respuesta 1

Más fácil de demostrar con un ejemplo: Prueba de cadena = "salut ð \ u009F \ u0098 \ u0085 test"; Scanner scan = nuevo escáner (prueba); System.out.println ("1:" + scan.nextLine ()); System.out ....

Tengo este código c ++: / * Archivo: ejemplo.cpp * / #include <iostream> #include <time.h> double My_variable = 3.0; int fact (int n) {if (n <= 1) devuelve 1; de lo contrario, devuelve n * fact (n-1); } En t ...

Tenemos la necesidad de vincularnos al mismo puerto local al responder a las solicitudes. A continuación se muestra una muestra de código Java. En Linux podemos vincularnos al mismo puerto dos veces, pero en Windows obtenemos un error en el segundo enlace. ...

Tengo un javax.xml.datatype.Duration que contiene una fracción de milisegundos, por ejemplo, una duración de 1.5ms (1500 microsegundos): Duración duración = DatatypeFactory.newInstance (). NewDuration ("PT0.0015S"); ...