在Java中,volatile
是一個關鍵字,用于修飾變量。使用volatile
關鍵字修飾的變量具有以下特點:
可見性:volatile
關鍵字確保變量的修改對所有線程都可見。當一個線程修改一個volatile
變量時,其他線程會立即看到最新的修改。
有序性:volatile
關鍵字禁止指令重排序優化。使用volatile
關鍵字修飾的變量,在讀寫操作的前后會插入內存屏障,確保指令的執行順序符合預期。
使用volatile
關鍵字修飾變量的語法如下:
volatile dataType variableName;
例如,下面的代碼片段演示了如何使用volatile
關鍵字:
public class VolatileExample {
private volatile boolean flag = false;
public void setFlag(boolean value) {
flag = value;
}
public boolean getFlag() {
return flag;
}
}
在上面的代碼中,flag
變量被volatile
關鍵字修飾,確保其可見性和有序性。其他線程在讀寫flag
變量時,會直接讀取和修改主內存中的最新值,而不是使用線程的本地緩存。