Junior — Middle
Na jakim obiekcie realizowany jest mechanizm blokady przy użyciu słowa kluczowego synchronized?
sobes.tech AI
Odpowiedź od AI
W Javie, użycie słowa kluczowego synchronized zależy od kontekstu:
- Jeśli
synchronizedjest stosowane do metody niestatycznej, blokada odbywa się na obiekcie (this), na którym wywoływana jest metoda. - Jeśli
synchronizedjest stosowane do metody statycznej, blokada odbywa się na obiekcie klasy (Class), czyli na samej klasie. - Jeśli używany jest blok
synchronized(obj), blokada odbywa się na obiekcieobj.
Przykład:
public class Example {
public synchronized void instanceMethod() {
// blokada na this
}
public static synchronized void staticMethod() {
// blokada na Example.class
}
public void blockMethod() {
Object lock = new Object();
synchronized(lock) {
// blokada na lock
}
}
}