Sobes.tech
Junior — Middle

Ako funguje mechanizmus synchronized pri použití s ​​statickou funkciou v kontexte monitora?

sobes.tech AI

Odpoveď od AI

Keď je metóda v Jave deklarovaná ako synchronized static, monitor (zámok) sa získava na úrovni triedy, nie na úrovni inštancie objektu. To znamená, že pri volaní takejto metódy vlákno zablokuje monitor triedy (objekt Class), a žiadne iné vlákna nemôžu súčasne vykonávať iné statické synchronizované metódy tej istej triedy.

Príklad:

public class Example {
    public static synchronized void staticSyncMethod() {
        // zablokuje monitor triedy Example.class
        // kritická sekcia
    }
}

Týmto spôsobom synchronized na statickej metóde zabezpečuje vzájomné vylúčenie na úrovni celej triedy, nie konkrétneho objektu. Toto je užitočné, keď je potrebné synchronizovať prístup ku statickým zdrojom alebo premenným triedy.