其实 Thread 这个类也是继承 Runnable 接口的,并且提供了默认的 run 方法实现:
@Override
public void run() {
if (target != null) {
target.run();
}
}
target 我们说过了,是一个 Runnable 类型的字段,Thread 构造函数会初始化这个 target 字段。所以当线程启动时,调用的 run 方法就会是我们自己实现的实现类的 run 方法。
所以,自然会有第二种创建方式。
2、继承 Thread 类
既然线程启动时会去调用 run 方法,那么我们只要重写 Thread 类的 run 方法也是可以定义出我们的线程类的。
public class MyThreadT extends Thread{
@Override
public void run(){
System.out.println("hello world");
}
}
Thread thread = new MyThreadT();
thread.start();
效果是一样的。