Sobes.tech
Junior — Middle

Su quale oggetto viene effettuato il meccanismo di blocco quando si utilizza la parola chiave synchronized?

sobes.tech AI

Risposta dell'AI

In Java, quando si utilizza la parola chiave synchronized, il meccanismo di blocco dipende dal contesto:

  • Se synchronized viene applicato a un metodo non statico, il blocco avviene sull'oggetto (this) da cui viene chiamato il metodo.
  • Se synchronized viene applicato a un metodo statico, il blocco avviene sull'oggetto della classe (Class), cioè sulla classe stessa.
  • Se si utilizza un blocco synchronized(obj), il blocco avviene sull'oggetto obj.

Esempio:

public class Example {
    public synchronized void instanceMethod() {
        // blocco su this
    }

    public static synchronized void staticMethod() {
        // blocco su Example.class
    }

    public void blockMethod() {
        Object lock = new Object();
        synchronized(lock) {
            // blocco su lock
        }
    }
}