Heim >Java >javaLernprogramm >Was bewirkt die Schlüsselwortsperre „synchronized' in einer statischen Methode in Java?

Was bewirkt die Schlüsselwortsperre „synchronized' in einer statischen Methode in Java?

Patricia Arquette
Patricia ArquetteOriginal
2024-11-10 11:35:02611Durchsuche

What Does the `synchronized` Keyword Lock on in a Static Method 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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn