先上代码:
一个普通的线程类
一个普通的测试类
结果
过程
1.启动main方法(当前线程为main线程)
(当前线程是main线程)
2.进入MyThread2类的构造器内输出第一句话:
这是因为Thread.currentThread().getName()方法获取的是当前线程的名称,当前线程是main线程,这个名称自然就是main了。
3.输出第二句话:
这里输出的是该线程对象(也就是t2)的名称,因为当我们执行到这里的时候,为该线程对象设置名称的那一步代码还没有执行,所以这里直接使用父类为我们提供的名称。
可以在Thread类查看到:
4.然后测试类这边启动t2线程并设置了线程对象的名称为t2:
执行MyThread2里面的run()方法:(当前线程为t2)
5.然后启动线程t3并且将t2线程作为对象传入:(当前线程为t3)
但是因为我们将t2对象作为参数传入,所以调用的t2对象的run方法
6.所以最后输出的结果如下图所示了
有哪里不理解的地方可以留言评论哦