Junior — Middle
Millisel objektil toimub lukustamise mehhanism, kui kasutatakse synchronized märksõna?
sobes.tech AI
Vastus AI-lt
Java-s, kasutades märksõna synchronized, lukustamise mehhanism sõltub kontekstist:
- Kui
synchronizedrakendatakse mitte-staatilisele meetodile, toimub lukustamine objekti (this) peal, millelt meetod kutsutakse. - Kui
synchronizedrakendatakse staatilisele meetodile, toimub lukustamine klassi objekti (Class) peal, ehkki klass ise. - Kui kasutatakse
synchronized(obj)plokki, toimub lukustamine objektiobjpeal.
Näide:
public class Example {
public synchronized void instanceMethod() {
// lukustamine `this` peal
}
public static synchronized void staticMethod() {
// lukustamine `Example.class` peal
}
public void blockMethod() {
Object lock = new Object();
synchronized(lock) {
// lukustamine `lock` peal
}
}
}