aio*_*obe 13
首先,由于非易失性变量,没有保证暴露缓存的方法.您的JVM可能对您始终非常友好,并有效地将每个变量视为易失性.
话虽如此,有几种方法可以增加线程缓存自己版本的非易失性变量的可能性.这是一个在我测试过的大多数机器上公开volatile的重要性的程序(从这里改编版本):
class Test extends Thread {
boolean keepRunning = true;
public void run() {
while (keepRunning) {
}
System.out.println("Thread terminated.");
}
public static void main(String[] args) throws InterruptedException {
Test t = new Test();
t.start();
Thread.sleep(1000);
t.keepRunning = false;
System.out.println("keepRunning set to false.");
}
}
Run Code Online (Sandbox Code Playgroud)
该程序通常只会输出
keepRunning set to false.
Run Code Online (Sandbox Code Playgroud)
并继续运行.使keepRunning
volatile变得可以打印
keepRunning set to false.
Thread terminated.
Run Code Online (Sandbox Code Playgroud)
并终止.