为什么我们需要基元上的 volatile ?我发现的最常见的例子是 that :
volatile boolean shutdownRequested;
...
public void shutdown() { shutdownRequested = true; }
public void doWork() {
while (!shutdownRequested) {
// do stuff
}
}
但是当我尝试自己运行它时。 volatile 声明没有改变。它以 volatile 和非 volatile 停止 shutdownRequested
最佳答案
从本质上来说,Volatile 是用来表示一个变量的值会被不同的线程修改。
volatile Java 变量意味着:
该变量的值永远不会在线程本地缓存:所有读取和写入都将直接进入“主内存”; 并且对变量的访问就像将其包含在同步块(synchronized block)中一样,对其自身进行同步。
关于Java 的原语上的 volatile ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15786619/