这是因为上面的守护线程的初始化要花的时间较长,所以先输出了你所看到的。
DEAMON是守护线程,守护线程没有结束之前,应用程序不能退出,而普通线程结束之前,主程序可以退出。

解决方案 »

  1.   

    为什么 守护线程 内部的子线程 也是deamon 的??
      

  2.   

    因为主线程(main thread)的优先级是5,而deamon的优先级也是5。主线程在你的程序开始的时候(也就是进入main方法的时候),就已经开始运行了。因此,主线程会优先运行。先打出来"d.isDaemon() = " + d.isDaemon()。至于守护线程,java中的守护线程与普通线程是基本相似的。守护线程是服务于普通线程的(gc就是守护线程)。当系统中的普通线程全部正常退出或被停止后,如果守护线程处于运行状态,则虚拟机不退出,等待守护线程执行;如果守护线程处于block状态,则虚拟机直接退出。
      

  3.   

    up!if your modify as following, you will get what you want. ...
      public Daemon() { 
        setDaemon(true);
        setPriority(6);  //set it as higher priority
        start();
      }
    ...
      

  4.   

    to cyberfool
    不一定,start是需要时间的