Einführung in die vier von synchronisierten Methoden
Dieser Artikel bietet Ihnen eine Einführung in die vier Methoden zur Verwendung von Synchronisation. Er hat einen gewissen Referenzwert. Ich hoffe, er wird Ihnen hilfreich sein.
1. Ändern Sie eine Methode
synchronized. Das Ändern einer Methode ist sehr einfach. Fügen Sie einfach „synced“ vor der Methode hinzu, zum Beispiel:
public synchronized void method() { // todo }
kann nicht verwendet werden Verwenden Sie beim Definieren von Schnittstellenmethoden das synchronisierte Schlüsselwort.
Konstruktormethoden können das synchronisierte Schlüsselwort nicht verwenden, können aber synchronisierte Codeblöcke zur Synchronisierung verwenden.
Das synchronisierte Schlüsselwort kann nicht vererbt werden. Wenn Sie synchronisieren möchten, müssen Sie das Schlüsselwort explizit hinzufügen.
Die durch das synchronisierte Schlüsselwort geänderte Methode ist standardmäßig nicht synchron, wenn sie überschrieben wird. Wenn Sie synchronisieren möchten, müssen Sie das Schlüsselwort explizit hinzufügen, sonst entspricht die Methode der übergeordneten Klasse der Synchronisierung.
2. Ändern Sie den Codeblock
public void method() { synchronized(this) synchronized(XX.class) }
synchronized(this) sperrt das aktuelle Objekt, dann gibt es hier mehrere Kopien davon Ist dies der Fall? Nur dasselbe Objekt kann gesperrt werden.
synchronized(XX.class) Diese Sperre ist nützlich, solange es sich um eine Klasse dieses Typs handelt
Wenn zwei gleichzeitige Threads auf den synchronisierten (diesen) Synchronisationscodeblock im selben Objektobjekt zugreifen, nur einer Es kann jeweils ein Thread ausgeführt werden. Ein anderer Thread muss warten, bis der aktuelle Thread die Ausführung dieses Codeblocks abgeschlossen hat, bevor er diesen Codeblock ausführen kann. Wenn ein Thread auf einen synchronisierten (diesen) synchronisierten Codeblock eines Objekts zugreift, kann ein anderer Thread weiterhin auf den nicht synchronisierten (diesen) synchronisierten Codeblock im Objekt zugreifen. Besonders kritisch ist, dass, wenn ein Thread auf einen synchronisierten (diesen) synchronisierten Codeblock des Objekts zugreift, der Zugriff anderer Threads auf alle anderen synchronisierten (diesen) synchronisierten Codeblöcke des Objekts blockiert wird.
Das dritte Beispiel gilt auch für andere synchronisierte Codeblöcke. Das heißt, wenn ein Thread auf einen synchronisierten (diesen) synchronisierten Codeblock eines Objekts zugreift, erhält er die Objektsperre dieses Objekts. Dadurch wird der Zugriff anderer Threads auf alle synchronisierten Codeteile des Objektobjekts vorübergehend blockiert.
Die oben genannten Regeln gelten auch für andere Objektsperren
3. Statische Methoden ändern
Wir wissen, dass statische Methoden zu Klassen und nicht zu Objekten gehören. In ähnlicher Weise sperrt die durch die Synchronisierung geänderte statische Methode alle Objekte dieser Klasse, und alle Klassen haben einen Sperreffekt, wenn sie verwendet werden
public synchronized static void method() { // todo }
4. Eine Klasse ändern
Was es tut Der Bereich ist der in Klammern eingeschlossene Teil nach der Synchronisierung, und die betroffenen Objekte sind alle Objekte dieser Klasse. Solange es sich um eine Klasse dieses Typs handelt, funktioniert es unabhängig von der Anzahl der Objekte. Der folgende Code
class ClassName { public void method() { synchronized(ClassName.class) { // todo } } }
Zusammenfassung:
A. Unabhängig davon, ob das synchronisierte Schlüsselwort einer Methode oder einem Objekt hinzugefügt wird, gilt die Sperre, auf die es einwirkt, als nicht statisch ist das Objekt; wenn synchronisiert. Wenn das Objekt eine statische Methode oder eine Klasse ist, ist die Sperre, die es erhält, dieselbe Sperre für alle Objekte der Klasse.
B. Jedem Objekt ist nur eine Sperre zugeordnet, die diese Sperre erhält.
C. Das Erreichen einer Synchronisierung erfordert einen hohen Systemaufwand und kann sogar zu einem Deadlock führen. Vermeiden Sie daher unnötige Synchronisierungskontrollen.
D. Das Synchronisierungsschlüsselwort sperrt das Objekt
Das obige ist der detaillierte Inhalt vonEinführung in die vier von synchronisierten Methoden. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



1. Grundfunktionen 1. Es beginnt mit einer optimistischen Sperre und wird bei häufigen Sperrkonflikten in eine pessimistische Sperre umgewandelt wird in eine Schwergewichtssperre umgewandelt. 3. Die Spin-Lock-Strategie, die am wahrscheinlichsten bei der Implementierung von Leichtgewichtssperren verwendet wird. 4. Es handelt sich um eine unfaire Sperre. 5. Es handelt sich um eine Wiedereintrittssperre. 6. Es handelt sich nicht um eine Lese-/Schreibsperre. 2. Die JVM Synchronisiert den Sperrvorgang. Sperren werden in die Zustände „keine Sperre“, „voreingenommene Sperre“, „leichte Sperre“ und „schwere Sperre“ unterteilt. Es wird je nach Situation nacheinander aktualisiert. Bei der voreingenommenen Sperre wird davon ausgegangen, dass der männliche Protagonist eine Sperre und die weibliche Protagonistin ein Thread ist. Wenn nur dieser Thread diese Sperre verwendet, können der männliche Protagonist und die weibliche Protagonistin für immer glücklich leben, auch wenn sie keine Heiratsurkunde erhalten (um hohe Werte zu vermeiden). -Kostenoperationen). Aber die weibliche Nebenrolle erscheint

1. Das Konzept der Sperre in Java Spin Lock: Wenn ein Thread eine Sperre erhält und die Sperre von einem anderen Thread erworben wurde, wartet der Thread in einer Schleife und beurteilt dann weiter, ob die Sperre erfolgreich erworben werden kann es wird erfasst. Die Sperre verlässt die Schleife. Optimistische Sperre: Unter der Annahme, dass kein Konflikt vorliegt. Wenn beim Ändern der Daten festgestellt wird, dass die Daten nicht mit den zuvor erfassten Daten übereinstimmen, werden die neuesten Daten gelesen und die Änderung erneut versucht. Pessimistische Sperre: Gehen Sie davon aus, dass Parallelitätskonflikte auftreten, synchronisieren Sie alle datenbezogenen Vorgänge und beginnen Sie mit der Sperrung beim Lesen von Daten. Exklusive Sperre (Schreiben): Fügen Sie der Ressource eine Schreibsperre hinzu, aber andere Threads können sie nicht erneut sperren (einzelnes Schreiben). Gemeinsame Sperre (Lesen): Nach dem Hinzufügen einer Lesesperre zu einer Ressource kann diese nur gelesen, aber nicht geändert werden. Andere Threads können nur Lesesperren hinzufügen und keine Schreibsperren (mehrfach) hinzufügen. Siehe als S

Zusammenfassung der Verwendung von synchronisiert in Java 1. Bei Verwendung von synchronisiert als Funktionsmodifikator lautet der Beispielcode wie folgt: Publicsynchronizedvoidmethod(){//….} Dies ist die Synchronisationsmethode. Welches Objekt ist derzeit synchronisiert? Was er sperrt, ist der Aufruf dieses synchronisierten Methodenobjekts. Mit anderen Worten: Wenn ein Objekt P1 diese Synchronisationsmethode in verschiedenen Threads ausführt, schließen sie sich gegenseitig aus, um einen Synchronisationseffekt zu erzielen. Allerdings kann ein anderes Objekt P2, das von der Klasse generiert wird, zu der dieses Objekt gehört, diese Methode mit dem hinzugefügten synchronisierten Schlüsselwort willkürlich aufrufen. Der obige Beispielcode usw.

1. Erklären Sie, dass synchronisiert unsere am häufigsten verwendete Synchronisierungsmethode ist und es drei Hauptmethoden gibt, sie zu verwenden. 2. Beispiel//Allgemeine Klassenmethodensynchronisation synchronisiertpublidvoidinvoke(){}//Klassenstatische Methodensynchronisation synchronisiertpublicstaticvoidinvoke(){}//Codeblocksynchronisation synchronisiert(object){}Der Unterschied zwischen diesen drei Methoden besteht darin, dass die synchronisierten Objekte unterschiedlich sind. Gewöhnliche Klassen synchronisieren das Objekt selbst, statische Methoden synchronisieren die Klasse selbst und Codeblöcke synchronisieren die Objekte, die wir in die Klammern füllen. Welche Sammlungen gibt es in Java?

Werkzeugvorbereitung Bevor wir offiziell über das Prinzip der Synchronisierung sprechen, sprechen wir zunächst über Spin-Locks, da Spin-Locks eine große Rolle bei der Optimierung der Synchronisierung spielen. Um Spinlocks zu verstehen, müssen wir zunächst verstehen, was Atomizität ist. Die sogenannte Atomizität bedeutet einfach, dass jede Operation entweder nicht ausgeführt wird oder dass sie während der Operation nicht unterbrochen werden kann. Um beispielsweise eine zu den variablen Daten hinzuzufügen, gibt es drei Schritte: Laden aus dem Speicher in das Register . Addiere eins zum Datenwert. Schreiben Sie das Ergebnis zurück in den Speicher. Atomizität bedeutet, dass ein Thread, der einen Inkrementierungsvorgang ausführt, nicht von anderen Threads unterbrochen werden kann. Nur wenn dieser Thread diese drei Prozesse abschließt

Zusammenfassung: Das synchronisierte Schlüsselwort wird in Java bereitgestellt, um sicherzustellen, dass nur ein Thread auf den synchronisierten Codeblock zugreifen kann. Warum wird die Lock-Schnittstelle auch im Java SDK-Paket bereitgestellt, da das synchronisierte Schlüsselwort bereitgestellt wurde? Ist das eine unnötige Neuerfindung des Rades? Heute werden wir dieses Thema gemeinsam besprechen. Das synchronisierte Schlüsselwort wird in Java bereitgestellt, um sicherzustellen, dass nur ein Thread auf den synchronisierten Codeblock zugreifen kann. Warum wird die Lock-Schnittstelle auch im Java SDK-Paket bereitgestellt, da das synchronisierte Schlüsselwort bereitgestellt wurde? Ist das eine unnötige Neuerfindung des Rades? Lassen Sie uns heute gemeinsam darüber diskutieren

Was ist Synchronized? Java-Lesern ist das Schlüsselwort „Synchronized“ nicht fremd. Es ist in verschiedenen Middleware-Quellcodes oder JDK-Quellcodes zu finden. Leser, die mit „Synchronized“ nicht vertraut sind, wissen nur, dass das Schlüsselwort „Synchronized“ in Multi verwendet werden muss -Threading kann die Thread-Sicherheit gewährleisten. Es heißt: Mutex-Sperre (nur ein Thread kann gleichzeitig ausgeführt werden, andere Threads warten). Es heißt auch: pessimistische Sperre (nur ein Thread kann gleichzeitig ausgeführt werden, andere Threads warten). Maschine hilft Ihnen bei der Implementierung. Entwickler müssen nur das synchronisierte Schlüsselwort verwenden. Wenn Sie es verwenden, müssen Sie ein Objekt als Mutex für die Sperre verwenden

Java bietet einige andere Modifikatoren, um über die Sichtbarkeit hinausgehende Funktionalität bereitzustellen. Diese Modifikatoren werden als Nichtzugriffsmodifikatoren bezeichnet. Als statisch deklarierte Mitglieder sind allen Instanzen der Klasse gemeinsam. Statische Mitglieder sind Mitglieder auf Klassenebene, die im Klassenspeicher gespeichert werden. Final Dieser Modifikator wird verwendet, um weitere Änderungen an einer Variablen, Methode oder Klasse einzuschränken. Der Wert einer als endgültig deklarierten Variablen kann nicht mehr geändert werden, sobald sie ihren Wert erhält. Die Final-Methode kann weder in einer Unterklasse überschrieben werden, noch kann eine Unterklasse der Final-Klasse erstellt werden. Zusammenfassung: Dieser Modifikator kann mit einer Klasse oder Methode verwendet werden. Sie können diesen Modifikator nicht auf Variablen und Konstruktoren anwenden. Als abstrakt deklarierte Methoden müssen in Unterklassen geändert werden. Sie können eine als abstrakt deklarierte Klasse nicht instanziieren. Synchronous Dieser Modifikator wird zur Steuerung mehrerer Threads verwendet
