选择题 6.  有如下代码:
    public class Test extends Thread
    {
    public static void main(String argv[])
    {
    Test b=new Test();
    b.run();
    }
    public void start()
    {
    for(int i=0;i<10;i++)
    {
    System.out.println("Value of i="+i);
    }
    }
    }
    当编译并运行上面程序时,输出结果是______。
【正确答案】 D
【答案解析】 在Java语言中,可以采用以下两种方法来创建线程:继承Thread类与实现Runnable接口。其中,在使用Runnable接口时,需要建立一个Thread实例。所以,无论是通过Thread类创建线程还是通过Runnable接口创建线程,都必须建立Thread类或它的子类的实例。
   Thread类提供了一个start()方法,该方法的功能是让这个线程开始执行,当这个线程开始执行后,JVM将会调用这个线程的run()方法来执行这个线程的任务。在实现多线程时,在继承了Thread类后必须实现run()方法,也就是说,线程的核心逻辑都存在于run()方法中,这个方法被start()方法调用来实现多线程的功能,如果直接调用run()方法,就与调用普通的方法类似。
   对于本题而言,Test类继承了Thread类,但是没有重写Thread类的run()方法,因此,b.run()实际上调用的是Tbread类的run()方法,而Thread类的run()方法的方法体为空,故这个程序能编译通过,但是没有输出结果。所以,选项D正确。