在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
变量时,会直接读取和修改主内存中的最新值,而不是使用线程的本地缓存。