Sobes.tech
Junior — Middle

Wie funktioniert der synchronized-Mechanismus, wenn er mit einer statischen Funktion im Kontext eines Monitors verwendet wird?

sobes.tech KI

Antwort von AI

Wenn eine Methode in Java als synchronized static deklariert ist, wird der Monitor (Lock) auf Klassenebene erworben, nicht auf Instanzebene. Das bedeutet, dass beim Aufruf einer solchen Methode der Thread den Monitor der Klasse (Object Class) sperrt, und keine anderen Threads gleichzeitig andere statische synchronisierte Methoden derselben Klasse ausführen können.

Beispiel:

public class Example {
    public static synchronized void staticSyncMethod() {
        // Sperrt den Monitor der Klasse Example.class
        // Kritischer Abschnitt
    }
}

Daher sorgt synchronized bei einer statischen Methode für gegenseitigen Ausschluss auf Klassenebene, nicht auf Objektebene. Dies ist nützlich, wenn der Zugriff auf statische Ressourcen oder Variablen der Klasse synchronisiert werden soll.