为了账号安全,请及时绑定邮箱和手机立即绑定

在《java并发编程实战》这本书中有一个例子

package chapter3;


import java.util.Iterator;


public class NoVisibility {

    private static boolean ready;

    private static int number;


    private static class ReaderThread extends Thread {

        public void run() {

            while (!ready)

                Thread.yield();

            System.out.println(number);

        }

    }


    public static void main(String[] args) {

            new ReaderThread().start();

            number = 42;

            ready = true;

    }

}


结果有可能是42,0或者是死循环。

我只能做出42这种情况。为什么?其它两种情况没成功过,加sleep也不会出现。



正在回答

1 回答

你的处理器是多核的,书上是不是写这是单核处理器的情况?

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

在《java并发编程实战》这本书中有一个例子

我要回答 关注问题
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号