Flüchtig

Definition - Was bedeutet flüchtig?

Volatile ist ein Schlüsselwort in der Java-Programmiersprache, das angibt, dass eine einer Klasse zugeordnete Mitgliedsvariable von mehreren Threads asynchron geändert werden kann. Das flüchtige Schlüsselwort im Code fungiert als Modifikator, wenn ein Mitglied deklariert wird. Schlüsselwörter sind grundsätzlich reservierte Wörter mit einer bestimmten Bedeutung im Kontext eines Compilers.

Das Schlüsselwort volatile wird immer dann verwendet, wenn die Variable eine von der Umgebung oder dem System abhängige Variable kennzeichnet, z. B. einfache Zähler und Uhren.

Technische.me erklärt Volatile

Das flüchtige Schlüsselwort stellt sicher, dass jeder Lesezugriff auf eine Mitgliedsvariable den neuesten Wert zurückgibt. Dies ist nicht wirksam, wenn die letzten Änderungen mit einem anderen Thread vorgenommen wurden. Wenn eine Mitgliedsvariable nicht als flüchtig deklariert ist, kann ein Thread die an einem anderen Thread vorgenommenen Änderungen nicht erkennen.

Für ein doppeltes oder langes Mitglied stellt das flüchtige Schlüsselwort auch sicher, dass die virtuelle Maschine nicht zwei aufeinanderfolgende 32-Bit-Schreibvorgänge generiert, sondern stattdessen nur einen 64-Bit-Schreibvorgang. Wenn dies nicht möglich ist, stellt die JVM-Implementierung weiterhin die Atomizität dieser Funktion sicher, damit die alte untere Hälfte nicht mit der neuen oberen Hälfte eines flüchtigen Double oder Long gelesen wird.

Durch flüchtige Schreib- und Lesevorgänge wird eine Vor-Ort-Beziehung eingerichtet. Bevor auf ein flüchtiges Objekt zugegriffen wird, erfolgt eine Synchronisation zwischen dem Hauptspeicher und den zwischengespeicherten Variablen, genau wie vor dem Betreten oder Verlassen eines synchronisierten Blocks. Dies bedeutet, dass ein flüchtiges Objekt ohne Synchronisation sicher veröffentlicht werden kann. Das heißt, wenn ein Thread auf ein flüchtiges Objekt zugreift, werden auch die Mitglieder dieses Objekts aktualisiert.

Wenn eine Variable als flüchtig beschrieben wird, führen JVM und Java-Compiler die folgenden zwei Dinge aus.

  1. Der Compiler kann die Anweisungen und Ausdrücke für diese Variable nicht maximieren.
  2. JVM synchronisiert die Variable.

Die Vorteile von flüchtig sind wie folgt:

  • Es ist leicht
  • Das Lesen und Schreiben verursacht einen sehr geringen Overhead, ist aber immer noch schneller als das Sperren.
  • Flüchtig ist beständig gegen tote Schlösser.