CodeMartain 2021-10-08 20:35 采纳率: 76.3%
浏览 23
已结题

这段代码有什么问题吗?

public class OrderDemo2 {
    private  static boolean ready=false;
    private static int num;
    static class Ordered extends Thread{
        @Override
        public void run() {
          while(!ready){
              Thread.yield();
          }
            System.out.println(num);
        }
    }
    public static void main(String[] args) throws InterruptedException {
        Thread t = new Ordered();
        t.start();
        num=55;
        ready=true;
        t.join();
    }
}

结果是55,还有可能出现0吗?运行了好多次也没出现0的情况

  • 写回答

1条回答 默认 最新

  • [PE]经典八炮 2021-10-08 20:42
    关注

    当然一定是55了,因为你在ready之前都不会执行,然后把num设成55之后才把ready设为true

    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 10月21日
  • 创建了问题 10月8日