拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...
Thread.currentThread()不是傳回目前程式執行的線程,而是傳回Thread.currentThread()這句程式碼執行時所在的執行緒。
所以看到,新的分線程構造時程式碼在主執行緒中執行,而run方法內的程式碼是分線程中執行的。
看輸出很容易理解
1、new一个Thread对象的时候默认的名字就是Thread-n格式的,你可以看看Thread源码。2、你这就是一个线程对象,this在你这样使用的情况下,是当前的线程了。3、Thread.currentThread()永遠都是傳回目前運行的執行緒。
new
Thread
Thread-n
this
Thread.currentThread()
構造方法運行結果可以理解,但是為什麼run方法的運行結果不是setName裡的testThread而是thread呢?
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()是當前線程
Thread.currentThread()不是傳回目前程式執行的線程,而是傳回Thread.currentThread()這句程式碼執行時所在的執行緒。
所以看到,新的分線程構造時程式碼在主執行緒中執行,而run方法內的程式碼是分線程中執行的。
看輸出很容易理解
1、
new
一个Thread
对象的时候默认的名字就是Thread-n
格式的,你可以看看Thread
源码。2、你这就是一个线程对象,
this
在你这样使用的情况下,是当前的线程了。3、
Thread.currentThread()
永遠都是傳回目前運行的執行緒。構造方法運行結果可以理解,但是為什麼run方法的運行結果不是setName裡的testThread而是thread呢?
1.getName()方法是從Thread類別繼承來的,看看Thread類別的getName()方法就知道了:
2.是
3.是
構造器中,Thread.currentThread()是main線程,run方法中的Thread.currentThread()是當前線程