Sobes.tech
Junior — Middle

Jak działa mechanizm synchronized przy użyciu go z funkcją statyczną w kontekście monitora?

sobes.tech AI

Odpowiedź od AI

Gdy metoda jest zadeklarowana jako synchronized static w Javie, monitor (lock) jest pobierany na poziomie klasy, a nie na poziomie instancji obiektu. Oznacza to, że podczas wywoływania takiej metody wątek blokuje monitor klasy (obiekt Class), a żadne inne wątki nie mogą jednocześnie wykonywać innych statycznych metod synchronizowanych tej samej klasy.

Przykład:

public class Example {
    public static synchronized void staticSyncMethod() {
        // blokuje monitor klasy Example.class
        // sekcja krytyczna
    }
}

W związku z tym, synchronized na metodzie statycznej zapewnia wzajemne wykluczanie na poziomie całej klasy, a nie konkretnego obiektu. Jest to przydatne, gdy trzeba zsynchronizować dostęp do statycznych zasobów lub zmiennych klasy.