public class Test{
    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);
        }
    }
    /**
     * @param args
     * @throws InterruptedException 
     */
    public static void main(String[] args) throws InterruptedException {
        // TODO Auto-generated method stub
        new ReaderThread().start();
        number = 42;
        ready = true;
    }}参与即有分快来参与哦 运行上面的代码,看看输出什么?严禁不运行直接回复

解决方案 »

  1.   

    难道楼主是想考ready初始值的问题?
      

  2.   

    42,难道是考验对yield();的认知?
      

  3.   

    42呗,楼主想用这种方式让自己记住yield吗?
      

  4.   

    楼主的愿意是这样反下?
      ready = true;
      number = 42;
            
      

  5.   

    42
    不过是不是因为是Static类型,所以在调用之前就被加载了
    最近研究static,不是很懂
      

  6.   

    N次测试  N次目测  都是42
    LZ快现身说明缘由
      

  7.   

    42
    E:\mywork\20120911>javac Test.javaE:\mywork\20120911>java Test
    42
    楼主做什么呢?
      

  8.   

    输出的值是42;
    但是还生成了Test$1.class和Test$ReaderThread.class;
    为什么呢?
      

  9.   

    目测了一哈 42 然后呢?
    ding
      

  10.   

    楼主你直接打印 System.out.println(number)多好