JAVA-初步認識-第十二章-Thread類中的方法線程名稱

來源:互聯網
上載者:User

標籤:線上   圖片   初始化   繼承   隨機   可讀性   編譯   多個   父類   

一.

不同的運行,導致over的位置發生了變化。為什麼呢?我們這裡至少有三個線程。三個線程之間來回隨機切換。

接下來我們想知道的問題就是,我們開啟了多個線程,怎麼區分現在正在啟動並執行線程是誰?多個線程隨機切換,我們怎麼區分。

區分的方法到哪兒找?到thread類中去尋找。線程怎麼區分,線程自己最清楚。

Thread建構函式裡面有一個name,線程有名字。

 

還有getName擷取名字。現在,我們就來擷取線程的名字(通過名字來區分線程)。(在上面的例子中,我們沒有對線程進行建構函式初始化,直接擷取名字會是什麼樣的呢?)

d1和d2兩個線程在哪兒執行的呢?應該都在run方法裡執行,

在run方法執行的時候,輸出語句中添加了擷取名稱的語句。(Demo是thread的子類,它也就具備父類的方法,來個getName是可以的)

運行之後,確實出現了名稱。名稱就是thread- 加上編號,從0開始編,這個就是線程的名字(說成預設的線程名字比較好),你要是開啟多個的話,就從0開始一直往後遍。(這裡DOS中顯示的被編號的線程是自己建立的線程吧?)

這個編號的出現可能是誰先調用了getName方法,就現在這裡出現編號,按照調用的順序來的。

現在修改程式,將start方法又改回了run方法,

(我覺著這個run的還是主線程操控的,不會有編號的出現。)

d1是主線程執行的,而且d1調用的run方法,也是主線程來執行的,就看主線程在執行run中getName方法時,輸出的線程編碼是什嗎?

編譯啟動並執行結果如下:

結果顯示d1的仍舊是thread-0,但由於是主線程執行的,導致旺財輸出是全面而又嚴謹的。(為什麼是thread-0,而不是main?主線程調用run方法,輸出了d1線程的名稱,不是輸出自己的名稱)

現在將兩個對象d1和d2全部改為run方法,

這回編碼依舊沒變,但是全部的代碼都是主線程執行的,順序很嚴謹。

給大家解釋一下,當我們建立兩個線程子類對象的時候,它們在建立的同時已經完成了名稱的定義。

每一個thread子類對象在建立的當時,就已經有了名稱了。但是,我們現在想要知道的是,正在啟動並執行線程的名稱是什嗎?

對於的程式,由於子類對象調用的是run方法,所以自己建立的兩個線程並沒有開啟,都是主線程在運行。現在想知道主線程的名字。

怎麼擷取當前運行線程的名字呢?(為什麼要糾結線程的名字呢?僅僅是為了區分多個線程嗎?)

繼承體系中的getName是擷取對象的名字。→不對,擷取的是自己建立線程的名稱。對象的名稱是構造初始化,傳遞實參得來的。

想要擷取運行時線程名稱,必須先要得到運行時線程對象(這裡的線程對象和繼承thread子類對象是不一樣的),

線上程類方法當中有一個方法,叫做currentThread(),返回thread類型,靜態,類名可以直接調用。

接著對原先的程式進行修改,如所示

Thread.currentThread().getName(),這樣寫文法是可以理解的,唯一讓我疑惑的是,為什麼是類名調用時,採用的Thread類,而不是Demo類?

當然編譯的結果顯示,線程名稱就是main

再次修改程式,

DOS結果顯示為三種線程的名稱。

接著提高擷取線程名稱方法的可讀性,複寫該方法。

 

(這裡在建構函式中輸入實參,怎麼就改變了擷取線程名方法的內容呢?)

在run方法的輸出中是由name的,也有getName方法?

DOS的結果中,null和線程名稱xiaoqiang,旺財怎麼來的?這個流程不是很清楚。

 

JAVA-初步認識-第十二章-Thread類中的方法線程名稱

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.