public void run() {
if (target != null) {
target.run();
}
}
不论是继承Tread类创建线程还是实现Runnable接口创建线程,启动线程一般都是调用Thread类的start()方法,然后由虚拟机自动调用Thread类的run()方法
兄弟你在你的Eclipse的这个target上面按ctrl键鼠标移到上面点进implement那个选项就是这个类的实现了。原理的话参考@Zhanjr这哥们儿的回答,一般使用Runable接口的,原因是Java的单继承。
target是Thread的Runnable参数,如果使用new Thread(target)构造,而没有重写Thread的run方法时候,Thread会在自己的run方法里面调用到传入的Runnable接口
new Thread(Runnable target){
//省略.....
this.target = target;
//省略.....
}
第一,你看源码中target的定义:private Runnable target; 因此这里target.run();调用的就是Runnable接口的run()方法。
第二,这个target具体的实例,是你具体代码传过来的, 你实例化一个Thread, 必然要初始化target对象。
综上,Java Thread类中的run方法中的target.run()的实现类是谁,这个实现类需要你来写。