关于Thread类的一个简单有关问题~
关于Thread类的一个简单问题~!
在JDK中Thread类的源码中有个方法:
其中target是Thread类的一个成员变量,当我们创建一个线程的时候:
当调用start()启动线程的时候,TheadTest线程怎么就知道调用target的run()方法呢,我们也没有给target成员变量赋值啊?
请问这是为什么啊?高手解决一下啊,我哪里理解的有问题啊?
------解决方案--------------------
在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方法