Sobes.tech
Junior — Middle

Jak odbywa się blokada podczas wywoływania statycznej metody zadeklarowanej słowem kluczowym synchronized?

sobes.tech AI

Odpowiedź od AI

Jeśli metoda statyczna jest zadeklarowana ze słowem kluczowym synchronized, to blokada odbywa się na obiekcie klasy (obiekt Class), a nie na instancji.

Oznacza to, że podczas wywoływania takiej metody, wątek przejmuje monitor (lock) klasy, do której należy metoda, a inne wątki próbujące wywołać dowolną inną zsynchronizowaną statyczną metodę tej samej klasy, będą czekać na zwolnienie blokady.

Przykład:

public class MyClass {
    public static synchronized void staticSyncMethod() {
        // kod metody
    }
}

Tutaj monitorem jest obiekt MyClass.class.