Junior — Middle
Op welk object wordt het vergrendelingsmechanisme uitgevoerd bij gebruik van het sleutelwoord synchronized?
sobes.tech AI
Antwoord van AI
In Java, afhankelijk van de context, hangt het lock-mechanisme bij gebruik van het sleutelwoord synchronized:
- Als
synchronizedwordt toegepast op een niet-statische methode, gebeurt de lock op het object (this) waarop de methode wordt aangeroepen. - Als
synchronizedwordt toegepast op een statische methode, gebeurt de lock op het klasse-object (Class), dat wil zeggen op de klasse zelf. - Als een blok
synchronized(obj)wordt gebruikt, gebeurt de lock op het objectobj.
Voorbeeld:
public class Example {
public synchronized void instanceMethod() {
// lock op this
}
public static synchronized void staticMethod() {
// lock op Example.class
}
public void blockMethod() {
Object lock = new Object();
synchronized(lock) {
// lock op lock
}
}
}