Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lernen Thread-Synchronisation | Grundlagen der Multithread-Verarbeitung
Multithreading in Java
course content

Kursinhalt

Multithreading in Java

Multithreading in Java

1. Grundlagen der Multithread-Verarbeitung
2. Synchronisierte Sammlungen
3. Hochrangige Synchronisationsmechanismen
4. Best Practices für Multithreading

book
Thread-Synchronisation

Synchronisierte Methoden und Blöcke

Synchronisierte Methoden und Blöcke in Java verhindern, dass mehrere Threads gleichzeitig auf die gleiche Ressource zugreifen. Dies hilft, Probleme wie Datenrennen zu vermeiden, bei denen mehrere Threads versuchen, eine gemeinsame Ressource gleichzeitig zu ändern.

Beispiel aus dem echten Leben: Stellen Sie sich ein Lagerhaus mit einem einzigen Eingang und Ausgang vor. Wenn mehrere Personen versuchen, gleichzeitig dieselbe Tür zu benutzen, kann es zu Chaos kommen. Synchronisation in der Programmierung wirkt wie ein Kontrolleur an der Tür, der nur einer Person erlaubt, gleichzeitig hindurchzugehen, um Kollisionen zu vermeiden.

Synchronisierte Methoden

Wenn eine Methode mit dem synchronized Schlüsselwort deklariert wird, sperrt sie automatisch das Objekt, zu dem die Methode gehört, für die Dauer der Ausführung der Methode.

Codebeispiel

java

Main

copy
123
public synchronized void increment() { //Adding the synchronized count++; }

In diesem Beispiel ist die increment() Methode synchronisiert, was bedeutet, dass nur ein Thread diese Methode zu einem bestimmten Zeitpunkt ausführen kann.

Synchronisierte Blöcke

Synchronisierte Blöcke ermöglichen es Ihnen, nur einen bestimmten Abschnitt einer Methode zu synchronisieren, was nützlich ist, wenn Sie nur einen bestimmten Teil des Codes synchronisieren möchten.

Codebeispiel

java

Main

copy
12345
public void increment() { synchronized(this) { count++; } }

In diesem Beispiel ist nur der Code innerhalb von synchronized(this) synchronisiert, was die Leistung verbessert, wenn die gesamte Methode keine Synchronisation benötigt.

Hinweis

Im synchronized(this)-Block bedeutet das Schlüsselwort this, dass der Codeblock auf der aktuellen Instanz des Objekts synchronisiert ist, speziell auf dem Objekt, für das diese Methode aufgerufen wird.

Objektmonitore

Wenn ein Thread einen Objektmonitor erwirbt, erhält er exklusiven Zugriff auf synchronisierte Methoden oder Blöcke dieses Objekts. Andere Threads, die versuchen, auf synchronisierte Methoden oder Blöcke desselben Objekts zuzugreifen, werden blockiert, bis der Monitor freigegeben wird.

Methoden wait(), notify(), notifyAll()

Die Methode wait() wird verwendet, um die Ausführung des aktuellen Threads zu suspendieren und die von ihm belegten Ressourcen freizugeben, bis ein anderer Thread die Methode notify() oder notifyAll() für dasselbe Monitorobjekt aufruft.

Die Methoden notify() und notifyAll() werden verwendet, um die Ausführung eines oder aller auf einem Monitorobjekt blockierten Threads fortzusetzen.

Hinweis

Die Methoden wait(), notify() und notifyAll() müssen innerhalb eines synchronisierten Blocks aufgerufen werden, der mit demselben Monitorobjekt wie der wartende Thread verbunden ist, um eine ordnungsgemäße Synchronisation sicherzustellen.

Im nächsten Kapitel werden wir untersuchen, was passieren kann, wenn Sie keine Synchronisation verwenden.

1. Was bewirkt das synchronized Schlüsselwort in Java?

2. Wie funktioniert der Objektmonitor in Java?

Was bewirkt das `synchronized` Schlüsselwort in Java?

Was bewirkt das synchronized Schlüsselwort in Java?

Wählen Sie die richtige Antwort aus

Wie funktioniert der Objektmonitor in Java?

Wie funktioniert der Objektmonitor in Java?

Wählen Sie die richtige Antwort aus

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 1. Kapitel 4
We're sorry to hear that something went wrong. What happened?
some-alt