直接上代码
package com.dq;
public class ThreadTest
{
public static void main(String[] args)
{
new Thread(
new Runnable() {
public void run()
{
System.out.println("传入runnable对象的run方法");
}
})
{ //这里重写Thread类的run方法
@Override
public void run() {
System.out.println("重写Thread类的run方法");
}
}.start();
}
}
运行结果是“重写Thread类的run方法”,以下说明原因。
以上代码相当于以下伪代码
1.MyThread extends Thread
2.MyThread重写run方法,此时Thread类中的run方法被覆盖,这里是关键,因为Thread类的run方法代码为
public void run() {
if (target != null) {
target.run();
}
}
重写后这里的代码变为System.out.println("重写Thread类的run方法"),自然target对象就没有了
3.初始化时传入了一个target,但是run方法中已经不引用target了,只是简单的一句输出语句,于是就会输出重写的方法里面的语句