Vi esto en uno de Heinz Kabutz Java Specialist ediciones del boletín y, aunque el resto (y, de hecho, todos) de los artículos del Dr. Kabutz están bien explicados y detallados, parecía pasar por alto lo que este código está haciendo, o más importante, lo que ha significado es:Java: bloques de sincronización anidados
public class SomeObject {
private Object lock1;
private Object lock2;
public void doSomething() {
synchronized(lock1) {
synchronized(lock2) {
// ...
}
}
}
}
¿Cuáles son las implicaciones de anidación synchronized
bloques? ¿Cómo afecta esto a los diferentes hilos que intentan doSomething()
?
En este escenario, todos los hilos se bloquearían en el candado exterior, hasta que se soltó por el hilo en el candado interno. –
El snippit que has publicado no hace nada; el único hilo que puede tener 'lock2' es el que tiene' lock1'. Sin saber qué es el resto del código y para qué se usan esos bloqueos, es imposible responder. –
¿Qué artículo estabas leyendo? – Jeffrey