首頁  >  問答  >  主體

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

高洛峰高洛峰2722 天前800

全部回覆(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
  • 取消回覆