Ahora, no estoy seguro si esta es una pregunta estúpida, por favor tengan paciencia conmigo si lo es.Java: ¿Qué es, en todo caso, bloqueado por métodos sincronizados aparte del objeto al que pertenecen?
El bloqueo de un objeto es "recursivo", i. mi. si dos objetos tienen referencias a un tercer objeto en sus campos y un hilo ejecuta un método sincronizado en uno de los dos, ¿puede otro hilo acceder al tercer objeto?
// a and b are some objects that implement Runnable
// they both reference the same third object
a.ref = c;
b.ref = c;
// a is run in a thread and processes some data in a loop for a long time
// the method the loop belongs to is declared synchronized
threadA = new Thread(a);
threadA.start();
a.someSyncedMethod(); // this would block ...
b.ref.someOtherSyncedMethod(); // ... but would this?
a.ref.someOtherSyncedMethod(); // ... and how about this?
No es una pregunta estúpida, solo una básica. No hay problema en pedir una mejor comprensión de los fundamentos del lenguaje –
Gracias. Sentí que esto debería ser obvio de alguna manera, pero todavía no lo entendí. –