下面代码的运行结果是什么?public test extends Thread{    public void run(){
     System.out.println(Thread.currentThread()==this);
    }    public static void main(String[] args){
      test the=new test();
      the.run();
      the.start();
}}

解决方案 »

  1.   

    start()方法是启动(即开辟)一个线程的方法,因此线程的启动必须通过此方法, 
    而run()方法,只是Thread类的一个方法,它本身并不能开辟线程。 
    所以,当你用run()时候,程序只有一个线程,根本没达到你多线程的目的(是错误的)。而你用start()时候,你的程序又开辟了两个线程,所以结果不同 
      

  2.   

    当然是start()了;如果你用run,就会阻住你的当前线程;
      

  3.   


    up
    买本 SCJP 看看,这本书看完,能明白一些有关线程的问题,顺便你还能考个证回来
      

  4.   

    当然不一样了 调用run只是调用普通的方法相当于
      

  5.   

    之所以出现线程,就是为了更好的利用CPU,让她更加“精明”的干活。通过调用Thread类的start()方法来启动一个线程,
    这时此线程是处于就绪状态,
    并没有运行。
    然后通过此Thread类调用方法run()来完成其运行操作的,
    这里方法run()称为线程体,
    它包含了要执行的这个线程的内容,
    Run方法运行结束,
    此线程终止,
    而CPU再运行其它线程,而如果直接用Run方法,
    这只是调用一个方法而已,
    程序中依然只有主线程--这一个线程,
    其程序执行路径还是只有一条,
    这样就没有达到写线程的目的。记住:线程就是为了更好地利用CPU,
    提高程序运行速率的!
      

  6.   

    启动当然是用start()。方法run()是由系统调用的。
      

  7.   

    启动一个线程用start()方法;然后系统会自动执行它的run()。
      

  8.   

    启动一个线程用start()方法;然后系统会自动执行它的run()。
      

  9.   

    启动线程肯定是用start()方法,这样就开始了一个新的线程,并进入就绪状态,当cpu给它分配时间片并且其它资源已经就绪的情况下那么它就可以运行了。
      

  10.   

    毫无疑问,肯定是start方法啊.
      

  11.   

    启动一个线程用start()方法;然后系统会自动执行它的run()。
      

  12.   

    不一样,启动一个线程是调用start()方法,使线程所代表的虚拟处理机处于可运行状态,这意味着它可以由JVM调度并执行。这并不意味着线程就会立即运行。run()方法可以产生必须退出的标志来停止一个线程。