Junior — Middle
Jak je zajištěno blokování při volání statické metody deklarované klíčovým slovem synchronized?
sobes.tech AI
Odpověď od AI
Pokud je statická metoda deklarována klíčovým slovem synchronized, pak blokování probíhá na objektu třídy (Class object), nikoliv na instanci.
To znamená, že při volání takové metody, vlákno získá monitor (lock) třídy, ke které metoda patří, a ostatní vlákna, která se pokusí zavolat jakoukoli jinou synchronizovanou statickou metodu téže třídy, budou čekat na uvolnění zámku.
Příklad:
public class MyClass {
public static synchronized void staticSyncMethod() {
// kód metody
}
}
Zde je monitorem objekt MyClass.class.