日期:2014-05-20  浏览次数:20722 次

关于Thread类的一个简单问题~!
在JDK中Thread类的源码中有个方法:
Java code
public void run() {
    if (target != null) {
        target.run();
    }
    }


其中target是Thread类的一个成员变量,当我们创建一个线程的时候:
Java code
class TheadTest extends Thread{
public void run(){
    System.out.println("Thread Test");
}

}

当调用start()启动线程的时候,TheadTest线程怎么就知道调用target的run()方法呢,我们也没有给target成员变量赋值啊?
请问这是为什么啊?高手解决一下啊,我哪里理解的有问题啊?

------解决方案--------------------
Java code
public void run() {
    if (target != null) {
        target.run();
    }
    }


class TheadTest extends Thread{
public void run(){
    System.out.println("Thread Test");
}

}

------解决方案--------------------
要看该线程类是不是初始化了target 要是才调用 不是则无为而返
通过native方法start0启动 都是调用Thread.run() 除非自建Thread类中有覆盖run方法