1. volatile具备两项特性:
- 保证此变量对所有线程的可见性。
- 禁止指令重排序优化
以下摘自 深入理解Java虚拟机 第三版 12章 Java内存模型与线程
2. volatile测试
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 - 结束
网友评论