Der Unterschied zwischen synchronisiert und statisch synchronisiert
1. Der Unterschied zwischen synchronisiert und statisch synchronisiert
Synchronisiert sperrt die aktuelle Instanz der Klasse, um zu verhindern, dass andere Threads gleichzeitig auf alle synchronisierten Blöcke der Instanz der Klasse zugreifen Instanz der Klasse". Für zwei verschiedene Instanzen einer Klasse gilt diese Einschränkung nicht. Dann geschieht die statische Synchronisierung, um den Zugriff auf alle Instanzen der Klasse zu steuern. Die statische Synchronisierung verhindert, dass Threads gleichzeitig auf alle Instanzen der Klasse in der JVM zugreifen und auf den entsprechenden Code zugreifen. Wenn in der Klasse eine Methode oder ein Codeblock synchronisiert ist, verfügt die Klasse nach dem Generieren einer Instanz der Klasse über einen Überwachungsblock und der synchronisierte Schutzblock wird platziert, um Threads den Zugriff auf die Instanz zu ermöglichen Gleichzeitig teilen sich statisch synchronisiert alle Instanzen dieser Klasse einen gemeinsamen Monitor, was den Unterschied zwischen den beiden darstellt, d. h. synchronisiert ist äquivalent zu this.synchronized und
statisch synchronisiert ist äquivalent zu Something.synchronized.
Der japanische Autor Jie Chenghao „Java Multithreading Design Patterns“ hat ein solches Beispiel:
public class Something(){
public synchronisiert void isSyncA(){}
public synchronisiert void isSyncB(){}
public static synchronisiert void cSyncA(){}
) und y.cSyncB( )
d. x.isSyncA() und Something.cSyncA()
Hier lässt sich eindeutig beurteilen:
a, beide greifen auf die synchronisierte Domäne derselben Instanz zu, können also nicht sein gleichzeitiger Zugriff
b, gilt für verschiedene Instanzen, sodass gleichzeitig darauf zugegriffen werden kann
c, da statisch synchronisiert, sodass verschiedene Instanzen weiterhin eingeschränkt sind, äquivalent zu Something.isSyncA() und Something.isSyncB(), daher kann nicht gleichzeitig auf sie zugegriffen werden.
Was ist also mit d? Auf die Antwort im Buch kann gleichzeitig zugegriffen werden. Der Grund für die Antwort ist, dass synchronisierte Instanzmethoden und synchronisierte Klassenmethoden unterschiedliche Sperren haben.
Persönliche Analyse ist, dass synchronisiert und statisch synchronisiert zwei Banden entsprechen. Jeder ist für seine eigenen Angelegenheiten verantwortlich. Es gibt keine Einschränkungen füreinander und es kann gleichzeitig darauf zugegriffen werden. Es ist noch nicht klar, wie das interne Design von Java synchronisiert wird.
Fazit: A: synchronisiertes statisches ist der Bereich einer bestimmten Klasse, synchronisiertes statisches cSync{} verhindert, dass mehrere Threads gleichzeitig auf die synchronisierte statische Methode in dieser Klasse zugreifen. Es funktioniert auf allen Objektinstanzen der Klasse.
B: synchronisiert ist der Bereich einer Instanz, synchronisiert isSync(){} verhindert, dass mehrere Threads gleichzeitig auf die synchronisierte Methode in dieser Instanz zugreifen.
2. Der Unterschied zwischen synchronisierten Methoden und synchronisiertem Code
Es gibt keinen Unterschied zwischen synchronisierten Methoden(){} und synchronisiert(this){}, nur synchronisierte Methoden(){ } ist leicht zu lesen und zu verstehen, und synchronisiert(this){} kann Konfliktbereiche mit eingeschränktem Zugriff genauer steuern und manchmal effizienter arbeiten.
3. Das synchronisierte Schlüsselwort kann nicht vererbt werden

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

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?

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.

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

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

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

1. Die synchronisierte Implementierung der Sperre ändert die Instanzmethode. Bei der normalen Synchronisierungsmethode ist die Sperre das aktuelle Instanzobjekt, das die statische Methode modifiziert Der Synchronisationsmethodenblock, die Sperre ist Die in synchronisierten Klammern konfigurierten Objekte! Wenn ein Thread versucht, auf einen synchronisierten Codeblock zuzugreifen, muss er die Sperre erhalten, und wenn er abgeschlossen ist (oder eine Ausnahme auftritt), muss er die Sperre aufheben. Wo genau existiert das Schloss? Lasst uns gemeinsam erkunden! Ich glaube jedoch, dass Sie, da Sie diesen Artikel finden, bereits mit seiner Verwendung vertraut sind. Wir werden keine detaillierte Erklärung seiner Verwendung geben und erklären, warum die Daten in Multithread-Situationen verwechselt werden.
