为了账号安全,请及时绑定邮箱和手机立即绑定

Java多线程Thread.currentThread()的疑问

Java多线程Thread.currentThread()的疑问

冉冉说 2019-03-13 18:19:32
代码如下: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方法内的代码是分线程中执行的。

看输出很容易理解


查看完整回答
反对 回复 2019-04-24
?
慕村9548890

TA贡献1884条经验 获得超4个赞

1、new一个Thread对象的时候默认的名字就是Thread-n格式的,你可以看看Thread源码。
2、你这就是一个线程对象,this在你这样使用的情况下,是当前的线程了。
3、Thread.currentThread()永远都是返回当前运行的线程。

查看完整回答
反对 回复 2019-04-24
?
万千封印

TA贡献1891条经验 获得超3个赞

构造方法运行结果可以理解,但是为什么run方法的运行结果不是setName里的testThread而是thread呢?


查看完整回答
反对 回复 2019-04-24
  • 4 回答
  • 0 关注
  • 1628 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号