Java并發(fā)(2)——基本屬性

線程屬性

線程ID, 線程名稱,線程類別(是否守候進程),線程組,線程優(yōu)先級

線程ID:Thread類自己管理ID,在Thread類中的nextThreadNum()方法來獲取線程Id的值,在java中所有的線程創(chuàng)建都共享同一個線程id變量,每次新增一個線程id值會增加1,具體實現(xiàn)如下:

上面是產(chǎn)生具體線程號的方法,在Thread類中,保存線程id號是用下面的字段來保存:

在創(chuàng)建線程Thread類的對象的時候,把threadSeqNumber值付給tid:

jdk只提供了Thread.getId()來獲取線程的id號,沒有提供設(shè)置ID號的方法。

線程名稱:線程名稱在線程定義的時候用戶可以自己傳入一個值,

? ? ? ? ? ? ? ? ? Thread t = new Thread("thread name");

如果用戶自定義線程名稱,Thread類會自己生產(chǎn)一個線程名稱:

jdk提供了獲取和設(shè)置線程名稱的API:

線程類別:判斷線程是否是守候線程,如果true表示線程是守候線程。用戶線程會阻止java虛擬機的正常停止,守候線程表示當虛擬機結(jié)束的時候,守候線程即使沒有執(zhí)行完,也會不會阻止java虛擬機的正常停止,注意線程設(shè)置守護線程必須是在線程啟動之前設(shè)置。

jdk提供了設(shè)置和判斷守護線程的方法:

線程優(yōu)先級:初始化線程優(yōu)先級為5,范圍是1-10,優(yōu)先級具體實現(xiàn)依賴于不同的操作系統(tǒng)平臺。JDK提供了設(shè)置和獲取線程優(yōu)先級的方法:

線程組:每個線程都屬于某一個線程組,如果沒有指定線程組,那么歸屬于父線程所在的線程組。如果用戶需要自己指定某個線程組,那么需要創(chuàng)建一個線程組:

JDK提供了兩個構(gòu)造方法來創(chuàng)建線程組:

public ThreadGroup(String name)

public ThreadGroup(ThreadGroup parent, String name)

一個提供線程組名稱,另外一個需要提供線程組的父線程組和線程組名稱。如果使用第一個構(gòu)造方法,那么默認將使用當前線程所在線程組作為parent的值:

啟動main方法的線程,所在的線程組名稱是main,該線程組的最大優(yōu)先級是10,凡是通過main方法所在的線程啟動的線程,如果不指定線程組,那么默認就屬于main線程組。而執(zhí)行main方法的線程所在線程組的父線程組是system線程組:

system線程組是由jvm創(chuàng)建:

自定義的線程組為該線程組設(shè)置了最大優(yōu)先級:

threadGroup.setMaxPriority(Thread.NORM_PRIORITY);

設(shè)置了最大優(yōu)先級,那么放入該線程中的所有線程的最大優(yōu)先級不能超過該值。那么jdk是如何保證這一點呢?請看如下代碼:

這段是調(diào)用線程組的setMaxPriority(pir),他會把它自己組內(nèi)所有的線程的優(yōu)先級設(shè)置為pir的值。如果一個線程A,在該線程組內(nèi),調(diào)用線程A的方法去設(shè)置線程的優(yōu)先級呢?看Thread類的setPriority方法:

圖中紅色部分表示為線程設(shè)置優(yōu)先級的時候,如果優(yōu)先級大于該線程所屬的線程組的最大優(yōu)先級的時候,安裝線程組的最大優(yōu)先級來設(shè)置。

線程基本屬性結(jié)束到這里,下一篇介紹線程的狀態(tài)。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,618評論 19 139
  • 進程和線程 進程 所有運行中的任務(wù)通常對應(yīng)一個進程,當一個程序進入內(nèi)存運行時,即變成一個進程.進程是處于運行過程中...
    小徐andorid閱讀 2,993評論 3 53
  • 下面是我自己收集整理的Java線程相關(guān)的面試題,可以用它來好好準備面試。 參考文檔:-《Java核心技術(shù) 卷一》-...
    阿呆變Geek閱讀 15,142評論 14 507
  • 流淚的時候是舒服的 思考的時候是痛苦的 我可以像豬一樣生活 卻無法像豬一樣快樂
    冰不懂的夏蟲閱讀 79評論 0 0
  • 在開始涂鴉之前,會計劃很多事情,畫什么,怎么畫。如果不把手弄臟,除了一面干凈的墻,不會得到什么。行動是檢驗的最好方...
    oulan閱讀 215評論 0 0

友情鏈接更多精彩內(nèi)容