Volatile は、変数の更新が他のスレッドに確実に通知されるようにする弱い同期メカニズムを提供します。揮発性変数はレジスタにキャッシュされず、他のプロセッサからは見えないため、揮発性変数を読み取ると、常に最後に書き込まれた値が返されます。これは次のセマンティクスとして想像できますが、volatile はより軽量な同期メカニズムです。 Volatile は可視性のみを保証できますが、アトミック性は保証できません。つまり、揮発性変数は i++ などの複合演算では使用できません。
次のようにコードをコピーします。
public synchronized void setValue(int value){
this.value = 値;
}
public synchronized int getValue(){
戻り値;
}
揮発性変数は、次の条件がすべて満たされる場合にのみ使用できます。
1. 変数への書き込み操作は変数の現在値に依存しません。あるいは、単一のスレッドのみが変数値を更新するようにすることもできます。
2. この変数は、他の状態変数とともに不変条件には含まれません。
3. 変数にアクセスするときにロックする必要はありません。