Heim >Java >javaLernprogramm >Was bewirkt die Schlüsselwortsperre „synchronized' in einer statischen Methode in Java?
Synchronisierte statische Methoden in Java: Sperren auf Klasse oder Objekt
Im Gegensatz zu Instanzmethoden, die einem Objekt zugeordnet sind, haben statische Methoden keine explizite Objektreferenz. Dies wirft die Frage auf: Wenn eine statische Methode synchronisiert wird, sperrt das Schlüsselwort dann die Klasse oder das Objekt?
Laut der Java-Dokumentation stellen synchronisierte Methoden sicher, dass „es nicht möglich ist, zwei Aufrufe synchronisierter Methoden durchzuführen.“ auf demselben Objekt zum Verschachteln. Für eine statische Methode gibt es jedoch kein zugehöriges Objekt.
Erfassung für Klassenobjekt sperren
Zur Verdeutlichung: Das synchronisierte Schlüsselwort in einer statischen Methode sperrt die Klasse Objekt, nicht das Objekt selbst. In der Java-Sprachspezifikation (Abschnitt 8.4.3.6) heißt es:
„Für eine Klassenmethode (statisch) wird der Monitor verwendet, der dem Klassenobjekt für die Klasse der Methode zugeordnet ist.“
Wenn daher zwei Threads synchronisierte statische Methoden für dieselbe Klasse ausführen, werden sie serialisiert, um sicherzustellen, dass jeweils nur ein Thread ausgeführt wird.
Zusammenfassend: Es ist wichtig zu verstehen, dass die Synchronisierung in statischen Methoden anders funktioniert als in Instanzmethoden. Statische Methoden erhalten eine Sperre für das Klassenobjekt, bieten kontrollierten Zugriff auf gemeinsam genutzte Daten und verhindern die gleichzeitige Ausführung.
Das obige ist der detaillierte Inhalt vonWas bewirkt die Schlüsselwortsperre „synchronized' in einer statischen Methode in Java?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!