请问一个多线程的问题
来源: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(); } }
运行结果如下:
如果解答了同学的疑问,望采纳~
祝学习愉快~
相似问题