首页  >  问答  >  正文

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

高洛峰高洛峰2722 天前802

全部回复(4)我来回复

  • PHPz

    PHPz2017-04-18 10:03:15

    Thread.currentThread()不是返回当前程序运行的线程,而是返回Thread.currentThread()这句代码执行时所在的线程。

    所以看到,新的分线程构造时代码在主线程中执行,而run方法内的代码是分线程中执行的。

    看输出很容易理解

    回复
    0
  • PHP中文网

    PHP中文网2017-04-18 10:03:15

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

    回复
    0
  • 巴扎黑

    巴扎黑2017-04-18 10:03:15

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

    回复
    0
  • PHP中文网

    PHP中文网2017-04-18 10:03:15

    1.getName()方法是从Thread类继承来的,看看Thread类的getName()方法就知道了:

        /**
         * Returns this thread's name.
         *
         * @return  this thread's name.
         * @see     #setName(String)
         */
        public final String getName() {
            return String.valueOf(name);
        }

    2.是
    3.是
    构造器中,Thread.currentThread()是main线程,run方法中的Thread.currentThread()是当前线程

    回复
    0
  • 取消回复