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.