Thread-Synchronisation

Definition - Was bedeutet Thread-Synchronisation?

Die Thread-Synchronisation ist die gleichzeitige Ausführung von zwei oder mehr Threads, die kritische Ressourcen gemeinsam nutzen. Threads sollten synchronisiert werden, um kritische Konflikte bei der Ressourcennutzung zu vermeiden. Andernfalls können Konflikte auftreten, wenn parallel laufende Threads gleichzeitig versuchen, eine gemeinsame Variable zu ändern.

Technische.me erklärt die Thread-Synchronisation

Betrachten Sie das folgende Beispiel, um die Thread-Synchronisierung zu verdeutlichen: Drei Threads - A, B und C - werden gleichzeitig ausgeführt und müssen auf eine kritische Ressource Z zugreifen. Um Konflikte beim Zugriff auf Z zu vermeiden, müssen die Threads A, B und C synchronisiert werden . Wenn also A auf Z zugreift und B auch versucht, auf Z zuzugreifen, muss der Zugriff von B auf Z mit Sicherheitsmaßnahmen vermieden werden, bis A seinen Betrieb beendet und aus Z herauskommt.

In Java werden zwei Synchronisationsstrategien verwendet, um Thread-Interferenzen und Speicherkonsistenzfehler zu vermeiden:

  • Synchronisierte Methode: Schließt das synchronisierte Schlüsselwort in seine Deklaration ein. Wenn ein Thread eine synchronisierte Methode aufruft, erhält die synchronisierte Methode automatisch die intrinsische Sperre für das Objekt dieser Methode und gibt sie frei, wenn die Methode zurückgegeben wird, selbst wenn diese Rückgabe durch eine nicht erfasste Ausnahme verursacht wurde.
  • Synchronisierte Anweisung: Deklariert einen zu synchronisierenden Codeblock. Im Gegensatz zu synchronisierten Methoden sollten synchronisierte Anweisungen die Objekte angeben, die die intrinsische Sperre bereitstellen. Diese Anweisungen sind nützlich, um die Parallelität mit einer fein abgestimmten Synchronisation zu verbessern, da sie die Vermeidung unnötiger Blockierungen ermöglichen.