请问一个多线程的问题

来源:6-3 实现线程同步的三种方式

KelvinChung

2019-10-24 14:00:04

http://img.mukewang.com/climg/5db13d31090f1ac621721548.jpg如图,请问老师:原本Test就是一个线程类,但是这句Thread thread = new Thread(Test);该怎么理解thread跟Test这两个线程之间的关系呢??

写回答

1回答

芝芝兰兰

2019-10-24

同学你好。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();
    }
}

运行结果如下:

http://img.mukewang.com/climg/5db145520929342207300261.jpg

如果解答了同学的疑问,望采纳~

祝学习愉快~

0

0 学习 · 8263 问题

查看课程