标签:volatile run 程序 ola 面试 == art rri div
public class Test { private static volatile Boolean b = true; public static void main(String[] args) throws InterruptedException { new Thread() { @Override public void run() { for(;;) { if(b == !b) { System.out.println("----------b:"+b); System.exit(0); }else { System.out.println("="); } } } }.start(); Thread.sleep(100); new Thread() { public void run() { for(;;) { b = !b; System.out.println("bb:"+b); } }; }.start(); } }
题目:程序的运行结果?a. 死循环 b.停止
输出结果:若干个(数量不定)"="后,程序exit停止
关键为b == !b,这一步程序为4步:
1. 获取b;2.获取第二个b;3.对第二个b进行取反;4. 计算第一个b和取反后的b
在第一步和第二步之间,b的值有可能会改变,结果就有可能成为 true==!false,所有这个看运气若干轮后会停止。
标签:volatile run 程序 ola 面试 == art rri div
原文地址:https://www.cnblogs.com/yifanSJ/p/9225469.html