代码如下:public class ThreadTest extends Thread{ public ThreadTest() { System.out.println("构造方法a:" + Thread.currentThread().getName()); System.out.println("构造方法b:" + this.getName()); } @Override public void run() { System.out.println("run方法a:" + Thread.currentThread().getName()); System.out.println("run方法b:" + this.getName()); } public static void main(String[] args) { Thread thread = new ThreadTest(); thread.setName("thread"); thread.start(); } }运行结果:构造方法a:main构造方法b:Thread-0run方法a:threadrun方法b:thread问题:1、构造方法中的this.getName()方法的返回值怎么得出来的?2、run()方法里的this是否指代当前运行的线程?3、Thread.currentThread()方法返回的是当前正在运行的线程吗?新手求指点,多谢!!!
4 回答

潇潇雨雨
TA贡献1833条经验 获得超4个赞
Thread.currentThread()不是返回当前程序运行的线程,而是返回Thread.currentThread()这句代码执行时所在的线程。
所以看到,新的分线程构造时代码在主线程中执行,而run方法内的代码是分线程中执行的。
看输出很容易理解

慕村9548890
TA贡献1884条经验 获得超4个赞
1、new
一个Thread
对象的时候默认的名字就是Thread-n
格式的,你可以看看Thread
源码。
2、你这就是一个线程对象,this
在你这样使用的情况下,是当前的线程了。
3、Thread.currentThread()
永远都是返回当前运行的线程。
添加回答
举报
0/150
提交
取消