volatile提供了弱同步機制,用來確保將變數更新通知到其它執行緒。 volatile變數不會被緩存在暫存器中或對其它處理器不可見的地方,因此在讀取volatile變數時總是會傳回最新寫入的值。可以想像成如下語意,然而volatile是更輕量級的同步機制。 volatile只能確保可見性,但不能保證原子性。也就是說不能在複合操作用volatile變量,例如i++。
複製代碼代碼如下:
public synchronized void setValue(int value){
this.value = value;
}
public synchronized int getValue(){
return value;
}
當滿足以下條件所有條件,才能使用volatile變量
1.對變數的寫入操作不依賴變數的目前值,或者你能確保只有單一執行緒更新變數值。
2.該變數不會與其他狀態變數一起納入不變性條件
3.在訪問變數是不需要加鎖