class ThreadTest extends Thread
{
public void run()
{
  System.out.println(Thread.currentThread().getName()+" is running");
}
}
class Test
{
public static void main(String []args)
{
  new ThreadTest().start();
  System.out.println("main is running");
}
}

解决方案 »

  1.   

    输出:
    main is running
    Thread-0 is running
    有什么错误?
      

  2.   

    这段代码没有错误呀~
    输出: 
    main is running 
    Thread-0 is running 

    Thread-0 is running 
    main is running 
    这个是因为cpu时间片分配的事情~不一定是哪一个先运行~
      

  3.   

    我执行了好多次都是输出
    main is running 
    Thread-0 is running 
    为什么?
      

  4.   

    线程的执行顺序取决于操作系统底层的调度。
    请不要在乎输出的顺序。呵呵。如果你一定想得到不一样的结果,请向代码中加一句:class ThreadTest extends Thread 

    public void run() 

      System.out.println(Thread.currentThread().getName()+" is running"); 


    class Test 

    public static void main(String []args) 

      new ThreadTest().start(); 
      Thread.sleep( 1000 );//这句代码是我加的
      System.out.println("main is running"); 

    }
      

  5.   

    从理论上来说,先执行main中的输出语句还是新线程中的输出语句的确不一定。比如你要考SCJP之类的认证,肯定选择不一定。但是,实际上来说,99%以上的CPU会优先执行Main中,因为不切换线程不需要额外的资源开销,CPU也很‘懒’,也喜欢从最节省资源开销等方面出发,先执行main中的语句。
      

  6.   

    说到底不就是时间片轮换么,
    new ThreadTest().start(); 这句话只是创建了一个线程,并处于就绪状态,但这并不代表它会运行,
    只有当它抢到资源(也就是获得时间片)才会运行。
      

  7.   

    加了“Thread.sleep(1000);”这句后需要抛出异常!
    class ThreadTest extends Thread 
       { 
    public void run() 
      { 
       System.out.println(Thread.currentThread().getName()+" is running"); 
      } 
       } 
    public class Test 

    public static void main(String []args) throws InterruptedException

      new ThreadTest().start(); 
      Thread.sleep(1000);
      System.out.println("main is running"); 

    }
      

  8.   

    运行main方法的类,必须是public类,我怀疑代码会不会运行成功.