capypad
0 Tage Serie
java / intermediate
Snippet

Speichersichtbarkeit mit dem volatile-Schlüsselwort

Das Schlüsselwort volatile stellt sicher, dass Änderungen an einer Variablen sofort für alle Threads sichtbar sind. Es verhindert, dass Threads die Variable lokal zwischenspeichern, sodass sie immer den neuesten Wert aus dem Hauptspeicher lesen.

snippet.java
java
1
2
3
4
5
6
7
8
9
public class SharedFlag {
private volatile boolean active = true;
 
public void stop() { active = false; }
 
public void work() {
while (active) { /* perform task */ }
}
}
Erklärung
1
private volatile boolean active
Stellt sicher, dass jeder Schreibvorgang auf 'active' für andere lesende Threads sichtbar ist, ohne explizite Synchronisation.
2
while (active)
Die Schleife wird korrekt beendet, selbst wenn ein anderer Thread stop() aufruft, da sie immer den Hauptspeicher prüft.