Sobes.tech
Junior — Middle

Jak funguje mechanismus synchronized při použití s statickou funkcí v kontextu monitoru?

sobes.tech AI

Odpověď od AI

Když je metoda v Javě deklarována jako synchronized static, je monitor (zámek) získáván na úrovni třídy, nikoliv na úrovni instance objektu. To znamená, že při volání takové metody vlákno blokuje monitor třídy (objekt Class), a žádná jiná vlákna nem mohou současně vykonávat jiné statické synchronizované metody téže třídy.

Příklad:

public class Example {
    public static synchronized void staticSyncMethod() {
        // blokuje monitor třídy Example.class
        // kritická sekce
    }
}

Tímto způsobem synchronized na statické metodě zajišťuje vzájemné vyloučení na úrovni celé třídy, nikoliv konkrétního objektu. To je užitečné, když je třeba synchronizovat přístup ke statickým zdrojům nebo proměnným třídy.