码迷,mamicode.com
首页 > 编程语言 > 详细

多线程面试

时间:2018-06-25 19:04:20      阅读:141      评论:0      收藏:0      [点我收藏+]

标签: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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!