Der PHP-Editor Xinyi führt Sie eingehend in die Java-Thread-Synchronisierung und den gegenseitigen Ausschluss ein und kombiniert Theorie mit Praxis, um Sie beim Aufbau eines Systems mit hoher Parallelität zu unterstützen. Durch diesen Artikel werden Sie das Konzept, die Implementierungsmethoden und die Anwendungsfähigkeiten der Thread-Synchronisierung in tatsächlichen Projekten verstehen und Ihnen dabei helfen, die Multithread-Parallelität in der Java-Entwicklung besser zu handhaben und die Systemleistung und -stabilität zu verbessern.
Java bietet eine Vielzahl von Synchronisierungsmechanismen, um Entwicklern dabei zu helfen, Thread-Sicherheit zu erreichen, darunter Sperrmechanismen, Synchronisierungsmethoden und flüchtige Schlüsselwörter. Unter diesen ist der Sperrmechanismus der am häufigsten verwendete und kann über das synchronisierte Schlüsselwort oder die Sperrschnittstelle implementiert werden. Eine synchronisierte Methode bezieht sich auf eine Methode, die das synchronisierte Schlüsselwort vor der Methode hinzufügt. Auf diese Methode kann jeweils nur ein Thread zugreifen. Das Schlüsselwort volatile stellt sicher, dass Variablen über mehrere Threads hinweg sichtbar sind und verhindert eine Neuordnung der Anweisungen. Java-Thread-Synchronisierung und gegenseitiger Ausschluss:
Um die Java-Thread-Synchronisation und den gegenseitigen Ausschluss besser zu verstehen, zeigen wir anhand eines einfachen Beispiels, wie der Java-Sperrmechanismus verwendet wird, um Thread-Sicherheit zu erreichen.
public class Counter { private int count; public synchronized void increment() { this.count++; } public int getCount() { return this.count; } } public class Main { public static void main(String[] args) { Counter counter = new Counter(); Thread thread1 = new Thread(() -> { for (int i = 0; i < 10000; i++) { counter.increment(); } }); Thread thread2 = new Thread(() -> { for (int i = 0; i < 10000; i++) { counter.increment(); } }); thread1.start(); thread2.start(); try { thread1.join(); thread2.join(); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("Final count: " + counter.getCount());// 输出Final count: 20000 } }Im obigen Beispiel haben wir eine Counter-Klasse definiert, die eine ganzzahlige Mitgliedsvariable count und zwei Methoden enthält: increment() und getCount(). Die increment()-Methode verwendet das synchronisierte Schlüsselwort, um sie als synchronisierte Methode zu markieren und sicherzustellen, dass jeweils nur ein Thread darauf zugreifen kann. Wir haben zwei Threads erstellt. Jeder Thread ruft die Methode increment() 10.000 Mal auf, um die Zählvariable zu erhöhen. Durch die Verwendung des synchronisierten Schlüsselworts kann garantiert werden, dass die Zählvariable über mehrere Threads hinweg konsistent ist und das endgültige Ausgabeergebnis 20000 ist.
Java-Thread-Synchronisation und gegenseitiger Ausschluss sind wesentliche Kenntnisse für den Aufbau eines
Das obige ist der detaillierte Inhalt vonJava-Thread-Synchronisation und gegenseitiger Ausschluss: Theorie und Praxis koexistieren, um ein System mit hoher Parallelität zu schaffen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!