Volatile bietet einen schwachen Synchronisierungsmechanismus, um sicherzustellen, dass Variablenaktualisierungen anderen Threads mitgeteilt werden. Flüchtige Variablen werden nicht in Registern zwischengespeichert oder sind auf andere Weise für andere Prozessoren unsichtbar. Daher wird beim Lesen einer flüchtigen Variablen immer der zuletzt geschriebene Wert zurückgegeben. Man kann es sich wie die folgende Semantik vorstellen, aber flüchtig ist ein leichterer Synchronisationsmechanismus. Volatile kann nur Sichtbarkeit gewährleisten, nicht jedoch Atomizität. Mit anderen Worten, flüchtige Variablen können nicht in zusammengesetzten Operationen wie i++ verwendet werden.
Kopieren Sie den Codecode wie folgt:
öffentlich synchronisiert void setValue(int value){
this.value = value;
}
public synchronisiert int getValue(){
Rückgabewert;
}
Flüchtige Variablen können nur verwendet werden, wenn alle folgenden Bedingungen erfüllt sind:
1. Der Schreibvorgang in die Variable hängt nicht vom aktuellen Wert der Variablen ab, oder Sie können sicherstellen, dass nur ein einzelner Thread den Variablenwert aktualisiert.
2. Diese Variable wird nicht zusammen mit anderen Zustandsvariablen in die Invarianzbedingung einbezogen
3. Beim Zugriff auf Variablen ist keine Sperre erforderlich.