class rrr
{
  public static void main(String[] args)
  {
      a at=new a();
      at.start();
      System.out.println("main "+Thread.currentThread().getName());   
  }
}
class a extends Thread
{
  public void run()
  {
      System.out.println(getName());
  }
}
我用的JAVA是JDK1.5这个程序的经过多次运行后的结果是
C:\>java rrr
Thread-0
main main
C:\>java rrr
Thread-0
main main
C:\>java rrr
Thread-0
main main
C:\>java rrr
main main
Thread-0
C:\>java rrr
Thread-0
main main
为什么不一样呢

解决方案 »

  1.   

    按孙鑫老师的教程运行结果因该是
    C:\>java rrr
    main main
    Thread-0
    这是为什么
      

  2.   

    public class Rrr
    {
      public static void main(String[] args)
      {
          a at=new a();
          //at.start();
          System.out.println("main "+Thread.currentThread().getName()); 
        at.start();
      }
    }
    class a extends Thread
    {
      public void run()
      {
          System.out.println(getName());
      }
    }
    你这样写和孙老师的结果不就一样了吗?
      

  3.   

    哈哈,我知道!因为你at.start();以后,其实线程at并没有立刻开始工作,main的线程也没有阻塞,而是继续往下走。当程序全进了JVM以后,内存安排线程的工作顺序,所以会出现有时候先打出main main 而有时候却先打出Thread-0。
    注意:线程的运行顺序不是固定的!