以下摘自 深入理解Java虚拟机 第三版 12章 Java内存模型与线程


public class MainTest {
private volatile static boolean bool = true;
public static void main(String[] args) throws InterruptedException {
Thread thread = new Thread(new Thread0());
thread.start();
Thread.sleep(2000);
bool = false;
System.out.println("main - 结束");
}
public static class Thread0 implements Runnable{
@Override
public void run() {
while (bool){//能立刻知晓volatile bool 值的改变
}
System.out.println("Thread0 - 结束");
}
}
}main - 结束
Thread0 - 结束