这段代码有什么问题吗?

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的情况

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