Heim Java javaLernprogramm Java-Thread-Synchronisation und gegenseitiger Ausschluss: Lassen Sie Ihr Programm in der gleichzeitigen Welt tanzen

Java-Thread-Synchronisation und gegenseitiger Ausschluss: Lassen Sie Ihr Programm in der gleichzeitigen Welt tanzen

Feb 19, 2024 pm 07:33 PM
java 原子操作 volatile 并发编程 互斥 线程同步 并发访问 同步机制

Java-Thread-Synchronisation und gegenseitiger Ausschluss: Lassen Sie Ihr Programm in der gleichzeitigen Welt tanzen

Der PHP-Editor Zimo stellt Ihnen eine detaillierte Analyse der Java-Thread-Synchronisierung und des gegenseitigen Ausschlusses zur Verfügung, damit Sie sich problemlos in der Parallelwelt zurechtfinden können. Im heutigen Zeitalter der Informationsexplosion ist die Multithread-Programmierung zu einer wesentlichen Fähigkeit geworden. Für die Verbesserung der Programmleistung ist es von entscheidender Bedeutung, zu verstehen, wie Thread-Synchronisierung und gegenseitiger Ausschluss erreicht werden. In diesem Artikel erfahren Sie, wie Sie die Schlüsselwörter „synced“, „Lock interface“ und „volatile“ in Java verwenden, um Thread-Synchronisierung und gegenseitigen Ausschluss zu erreichen und Ihr Programm in einer gleichzeitigen Umgebung stabiler und effizienter zu machen.

Java bietet umfangreiche Thread-Synchronisierungs- und gegenseitige Ausschlussmechanismen, um Entwicklernbei der Lösung von Herausforderungen bei der gleichzeitigen Programmierung zu helfen. Zu diesen Mechanismen gehören hauptsächlich Sperren, atomare Operationen und flüchtige Schlüsselwörter. Sperren werden verwendet, um gemeinsam genutzte Ressourcen zu schützen. Sie ermöglichen einem Thread, die Ressource beim Zugriff zu monopolisieren, und verhindern so, dass andere Threads gleichzeitig darauf zugreifen, wodurch Dateninkonsistenzen und Programmabstürze vermieden werden. Eine atomare Operation bezieht sich auf eine unterbrechungsfreie Operation, die sicherstellt, dass, während ein Thread eine atomare Operation ausführt, andere Threads nicht auf die an der Operation beteiligten gemeinsam genutzten Variablen zugreifen können. Das Schlüsselwort volatile kann eine Variable ändern, um sie über mehrere Threads hinweg sichtbar zu machen und den Compiler daran zu hindern, die Variable zu „optimieren“. Um die Java-Thread-Synchronisierung und die gegenseitigen Ausschlussmechanismen besser zu verstehen, demonstrieren wir die Verwendung dieser Mechanismen anhand von Codebeispielen. Zuerst erstellen wir eine gemeinsam genutzte Ressourcenklasse, die eine Variable count zum Zählen enthält:

public class SharedResource {
private int count = 0;

public synchronized void increment() {
count++;
}

public synchronized int getCount() {
return count;
}
}
Nach dem Login kopieren

In der SharedResource-Klasse verwenden wir das Schlüsselwort synchronisiert, um die Methoden inkrementieren () und getCount () zu ändern. Dies bedeutet, dass diese beiden Methoden synchronisierte Methoden sind. Wenn ein Thread die synchronisierte Methode ausführt, werden andere Threads bis zum ersten blockiert Thread hat die Ausführung abgeschlossen. Dadurch wird sichergestellt, dass die Zählvariable über mehrere Threads hinweg

sicher

ist. Als nächstes erstellen wir eine Thread-Klasse, um den gleichzeitigen Zugriff auf gemeinsam genutzte Ressourcen zu simulieren:

public class MyThread extends Thread {
private SharedResource sharedResource;

public MyThread(SharedResource sharedResource) {
this.sharedResource = sharedResource;
}

@Override
public void run() {
for (int i = 0; i < 10000; i++) {
sharedResource.increment();
}
}
}
Nach dem Login kopieren

In der MyThread-Klasse verwenden wir das SharedResource-Objekt als Parameter und erhöhen gleichzeitig die Zählvariable, indem wir die increment()-Methode in der run()-Methode aufrufen.

Schließlich erstellen wir eine Hauptklasse, um mehrere Threads zu erstellen und diese zu starten:

public class Main {
public static void main(String[] args) {
SharedResource sharedResource = new SharedResource();

MyThread[] threads = new MyThread[10];
for (int i = 0; i < 10; i++) {
threads[i] = new MyThread(sharedResource);
threads[i].start();
}

for (MyThread thread : threads) {
try {
thread.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
}

System.out.println("Final count: " + sharedResource.getCount());
}
}
Nach dem Login kopieren

In der Hauptklasse haben wir ein SharedResource-Objekt und 10 MyThread-Objekte erstellt, die jeweils dasselbe SharedResource-Objekt verwenden. Dann starten wir diese 10 Threads und warten, bis die Ausführung aller Threads abgeschlossen ist. Schließlich geben wir den Wert der Zählvariablen aus und überprüfen, ob der Endwert 100.000 beträgt. Dies zeigt, dass der Thread-Synchronisationsmechanismus die Richtigkeit der Zählvariablen effektiv garantiert.

Anhand des obigen Beispiels zeigen wir, wie die Java-Thread-Synchronisierung und der Mechanismus zum gegenseitigen Ausschluss zum Schutz gemeinsam genutzter Ressourcen verwendet werden. In der tatsächlichen Entwicklung müssen Entwickler basierend auf spezifischen Anforderungen einen geeigneten Synchronisierungsmechanismus auswählen, um die Korrektheit und Zuverlässigkeit gleichzeitiger Programme sicherzustellen.

Das obige ist der detaillierte Inhalt vonJava-Thread-Synchronisation und gegenseitiger Ausschluss: Lassen Sie Ihr Programm in der gleichzeitigen Welt tanzen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
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

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
2 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Repo: Wie man Teamkollegen wiederbelebt
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Abenteuer: Wie man riesige Samen bekommt
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Quadratwurzel in Java Quadratwurzel in Java Aug 30, 2024 pm 04:26 PM

Leitfaden zur Quadratwurzel in Java. Hier diskutieren wir anhand eines Beispiels und seiner Code-Implementierung, wie Quadratwurzel in Java funktioniert.

Perfekte Zahl in Java Perfekte Zahl in Java Aug 30, 2024 pm 04:28 PM

Leitfaden zur perfekten Zahl in Java. Hier besprechen wir die Definition, Wie prüft man die perfekte Zahl in Java?, Beispiele mit Code-Implementierung.

Zufallszahlengenerator in Java Zufallszahlengenerator in Java Aug 30, 2024 pm 04:27 PM

Leitfaden zum Zufallszahlengenerator in Java. Hier besprechen wir Funktionen in Java anhand von Beispielen und zwei verschiedene Generatoren anhand ihrer Beispiele.

Weka in Java Weka in Java Aug 30, 2024 pm 04:28 PM

Leitfaden für Weka in Java. Hier besprechen wir die Einführung, die Verwendung von Weka Java, die Art der Plattform und die Vorteile anhand von Beispielen.

Armstrong-Zahl in Java Armstrong-Zahl in Java Aug 30, 2024 pm 04:26 PM

Leitfaden zur Armstrong-Zahl in Java. Hier besprechen wir eine Einführung in die Armstrong-Zahl in Java zusammen mit einem Teil des Codes.

Smith-Nummer in Java Smith-Nummer in Java Aug 30, 2024 pm 04:28 PM

Leitfaden zur Smith-Zahl in Java. Hier besprechen wir die Definition: Wie überprüft man die Smith-Nummer in Java? Beispiel mit Code-Implementierung.

Fragen zum Java Spring-Interview Fragen zum Java Spring-Interview Aug 30, 2024 pm 04:29 PM

In diesem Artikel haben wir die am häufigsten gestellten Fragen zu Java Spring-Interviews mit ihren detaillierten Antworten zusammengestellt. Damit Sie das Interview knacken können.

So lösen Sie das Problem vielbeschäftigter Server für Deepseek So lösen Sie das Problem vielbeschäftigter Server für Deepseek Mar 12, 2025 pm 01:39 PM

Deepseek: Wie kann man mit der beliebten KI umgehen, die von Servern überlastet ist? Als heiße KI im Jahr 2025 ist Deepseek frei und Open Source und hat eine Leistung, die mit der offiziellen Version von OpenAio1 vergleichbar ist, die seine Popularität zeigt. Eine hohe Parallelität bringt jedoch auch das Problem der Serververantwortung. Dieser Artikel wird die Gründe analysieren und Bewältigungsstrategien bereitstellen. Eingang der Deepseek -Webversion: https://www.deepseek.com/deepseek Server Beschäftigter Grund: Hoher Zugriff: Deepseeks kostenlose und leistungsstarke Funktionen ziehen eine große Anzahl von Benutzern an, die gleichzeitig verwendet werden können, was zu einer übermäßigen Last von Server führt. Cyber ​​-Angriff: Es wird berichtet, dass Deepseek Auswirkungen auf die US -Finanzbranche hat.

See all articles