public class Test {
volatile boolean shutdownRequested;
public void shutdown() {
shutdownRequested=true;
}
public void doWork() {
//比如这里,每一次访问shutdownRequested都需要从主存中获取;而普通变量就有可能只在工作内存中获取
while(!shutdownRequested) {
//do stuff
}
}
}
访问不访问主存,取决于缓存里的数据是不是脏数据。加上volatile,可以避免脏读cache里的数据。