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
synchronizedviene applicato a un metodo non statico, il blocco avviene sull'oggetto (this) da cui viene chiamato il metodo. - Se
synchronizedviene 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'oggettoobj.
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
}
}
}