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.