使用java代码验证volatile的可见性
代码执行前分析:线程执行都是在各自的栈中,所以如果volalite修饰的变量使的所有线程都可见,就验证成功。
public class Volatile {
/*验证volatile的可见性*/
/*volatile*/ static Boolean running= true;
public static void main(String[] args) throws InterruptedException {
new Thread(()->{
while (running){
}
System.out.println("end");
},"server").start();
Thread.sleep(1000);
running = false;
}
}
注释掉volatile是不会打印end的,放开volatile就会打印,因为running变量对另外一个线程可见了。有兴趣的可以自己试验一下。
创作来源:马士兵老师视频讲解。