请问一个多线程的问题
来源:6-3 实现线程同步的三种方式
KelvinChung
2019-10-24 14:00:04
如图,请问老师:原本Test就是一个线程类,但是这句Thread thread = new Thread(Test);该怎么理解thread跟Test这两个线程之间的关系呢??
1回答
同学你好。Test是一个继承了Thread类的子类。也就是说他们是子类与父类的关系。
1、new Test()得到的是Test类的一个实例
2、new Thread(test) 得到的是Thread类的一个实例。由于Test是Thread的子类,Thread又实现了Runnable接口。所以调用的是Thread类的Thread(Runnable target)构造方法。这里可以看做是用了Test实现的run方法来创建一个线程。
3、其实继承了Thread类本身的类也是一个可以开启线程的类。将代码做如下改造,同学可能理解的更好些:
public class Test extends Thread {
public Test(){
System.out.println("构造方法");
System.out.println("当前线程:"+Thread.currentThread().getName());
}
@Override
public void run(){
System.out.println("Test的run方法");
System.out.println("当前线程:"+Thread.currentThread().getName());
}
public static void main(String[] args) {
Test test = new Test();
Thread thread = new Thread(test);
test.setName("testThread");
test.start();
thread.setName("thread");
thread.start();
}
}运行结果如下:

如果解答了同学的疑问,望采纳~
祝学习愉快~
相似问题