Analyse des synchronisierten Prinzips

In Java stoßen wir häufig auf Multithreading-Situationen, und der gleichzeitige Zugriff durch Multithreads bringt einige Probleme mit sich, beispielsweise Probleme mit der Thread-Sicherheit. Daher bietet Java einen Mechanismus zur Lösung dieses Problems, nämlich das synchronisierte Schlüsselwort.

Was ist das synchronisierte Schlüsselwort?

synchronisiert ist ein Schlüsselwort in Java, das zum Ändern von Methoden und Codeblöcken verwendet werden kann. Wenn eine Methode oder ein Codeblock durch die Synchronisierung geändert wird, werden sie zu einer synchronisierten Methode oder einem synchronisierten Codeblock.

Die Rolle der synchronisierten

Die Rolle der Synchronisierung besteht darin, sicherzustellen, dass beim Zugriff mehrerer Threads auf dieselbe gemeinsam genutzte Ressource keine Dateninkonsistenz oder andere Thread-Sicherheitsprobleme auftreten. Wenn ein Thread auf eine synchronisierte Methode oder einen synchronisierten Codeblock zugreift, müssen andere Threads warten, bis der aktuelle Thread die Ausführung der synchronisierten Methode oder des synchronisierten Codeblocks abgeschlossen hat, bevor sie eintreten.

Das Implementierungsprinzip der Synchronisierung

Das Implementierungsprinzip der Synchronisierung wird durch das Sperren von Objekten erreicht. Wenn ein Thread auf eine synchronisierte Methode oder einen synchronisierten Codeblock zugreift, versucht er, die Sperre des Objekts zu erlangen. Wenn die Sperre nicht von anderen Threads belegt ist, kann der aktuelle Thread die Sperre erwerben und die synchronisierte Methode oder den synchronisierten Codeblock ausführen. Wenn die Sperre bereits von einem anderen Thread belegt ist, muss der aktuelle Thread warten, bis andere Threads die Sperre aufheben, bevor er die Sperre erhält.

So verwenden Sie synchronisiert

Es gibt zwei Möglichkeiten, synchronisiert zu verwenden: modifizierte Methoden und modifizierte Codeblöcke.

Modifikationsmethode

public synchronized void method() {
    
    
    //方法体
}

Wenn ein Thread auf die Methode zugreift, wird die Methode zu einer synchronisierten Methode. Andere Threads müssen warten, bis der aktuelle Thread die Ausführung dieser Methode abgeschlossen hat, bevor sie diese Methode ausführen können.

Codeblöcke dekorieren

public void method() {
    
    
    synchronized (this) {
    
    
		// 多线程资料    	
		System.out.println("https://cloud.fynote.com/share/d/IYgHWTNAA");
    }
}

Wenn ein Thread auf den Codeblock zugreift, wird der Codeblock zu einem synchronisierten Codeblock. Andere Threads müssen warten, bis der aktuelle Thread die Ausführung des Codeblocks abgeschlossen hat, bevor sie den Codeblock ausführen können.

Vor- und Nachteile von synchronisiert

Vorteil

Einfach und benutzerfreundlich: Die Multithread-Synchronisierung kann problemlos mit synchronisiert erreicht werden.
Hohe Zuverlässigkeit: Synchronized ist ein in Java integrierter Mechanismus, der die Sicherheit von Multithreading gewährleisten kann.
Weit verbreitet: Synchronisiert kann zum Ändern von Methoden und Codeblöcken verwendet und auf verschiedene Situationen angewendet werden.

Mangel

Geringe Effizienz: synchronisiert ist eine pessimistische Sperre, die die Ausführung anderer Threads blockiert, was zu einer verringerten Effizienz führt.
Es kann leicht zu Deadlocks kommen: Bei unsachgemäßer Verwendung kann die Synchronisierung zu Deadlock-Problemen führen.

Zusammenfassen

Synchronized ist ein Mechanismus in Java, der zur Lösung des Problems des gleichzeitigen Multithread-Zugriffs verwendet wird. Er kann sicherstellen, dass beim Zugriff mehrerer Threads auf dieselbe gemeinsam genutzte Ressource keine Dateninkonsistenz oder andere Thread-Sicherheitsprobleme auftreten. Die Synchronisierung weist jedoch auch Nachteile auf, z. B. eine geringe Effizienz und die Gefahr von Deadlocks. Daher müssen Sie bei der Verwendung von Synchronisierung auf die Verwendungsmethode und das Verwendungsszenario achten, um unnötige Probleme zu vermeiden.

Je suppose que tu aimes

Origine blog.csdn.net/qq_41917138/article/details/130308860
conseillé
Classement