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.