Sobes.tech
Junior — Middle

Ako sa vykonáva blokovanie pri volaní statickej metódy deklarovanej s kľúčovým slovom synchronized?

sobes.tech AI

Odpoveď od AI

Ak je statická metóda deklarovaná s kľúčovým slovom synchronized, blokovanie sa vykonáva na objekte triedy (Class object), nie na inštancii.

To znamená, že pri volaní takejto metódy, vlákno získa monitor (lock) triedy, ku ktorej patrí metóda, a iné vlákna, ktoré sa pokúšajú zavolať akúkoľvek inú synchronizovanú statickú metódu tej istej triedy, budú čakať na uvoľnenie zámku.

Príklad:

public class MyClass {
    public static synchronized void staticSyncMethod() {
        // kód metódy
    }
}

Tu je monitorom objekt MyClass.class.