java線程池數(shù)據(jù)結(jié)構(gòu)

續(xù)上篇所述,Java線程池作為jdk組件箱中重要的一員顶瞒,其產(chǎn)生的背后是要來解決一些需求夸政,如線程的管理,任務(wù)的管理榴徐,自身的生命周期的管理等守问。

有了需求,就有了一張藍圖坑资,其描繪了程序最初的樣子酪碘,程序設(shè)計由此便有了依據(jù)。按照古老的 “程序 =?數(shù)據(jù)結(jié)構(gòu)+?算法”?的指揮思想盐茎,我們首先得確定線程池的數(shù)據(jù)結(jié)構(gòu)兴垦。而數(shù)據(jù)結(jié)構(gòu)說白就是數(shù)據(jù)的組織與存儲的方式,就像是好的倉庫管理員對貨物分門別類的放置一樣,我們需要對線程池所管理的數(shù)據(jù)的進行妥當?shù)陌仓谩?/p>

首先探越,我們先明確線程池所管理的核心數(shù)據(jù)有哪些:一組線程及其描述量狡赐,一組任務(wù)及其描述量以及自身的狀態(tài)量(描述自身生命周期)。

我們先講一組線程及其描述量钦幔,線程池要持有一組線程的所有引用枕屉,這些線程得在線程池里創(chuàng)建,但創(chuàng)建的數(shù)量應(yīng)該有一個上限鲤氢,不能無限創(chuàng)建搀擂,故我們需要一個描述量maximumPoolSize來描述線程池能承受的實際最大線程數(shù),另外卷玉,為了進一步細粒度地約束線程池的大小哨颂,避免過多的線程空轉(zhuǎn)閑置,線程池需要另一個描述量corePoolSize來描述久住線程池的最小線程數(shù)相种。綜上威恼,線程池需要一個容器,三個描述量來封裝線程的相關(guān)操作寝并。

接著我們來講一組任務(wù)及其描述量箫措,線程池作為任務(wù)的調(diào)度和分配者,當任務(wù)過多時衬潦,需要一個任務(wù)的緩沖區(qū)來暫存待執(zhí)行的任務(wù)斤蔓,為了了解任務(wù)完成的總體情況,需要一個描述量completedTaskCount來描述當前線程池的完成的任務(wù)總數(shù)镀岛,綜上附迷,線程池需要另外一個容器,一個描述量來封裝任務(wù)的相關(guān)操作哎媚。

最后喇伯,我們講線程池自身的狀態(tài)量,線程池是一個獨立的組件拨与,組件內(nèi)部對調(diào)用者來說是黑盒稻据,雖說是黑盒,也要有一些必要的信息暴露給調(diào)用者买喧,以便調(diào)用者了解并根據(jù)這些信息做出對應(yīng)的決策捻悯。這里就包括RUNNING(正在運行),SHUTDOWN(關(guān)閉)淤毛,STOP(停止)今缚,TIDYING(清理),TERMINATED(結(jié)束)五種狀態(tài)低淡,那為什么需要這五種狀態(tài)姓言,這里就需要聯(lián)系線程池的優(yōu)雅停止處理的考慮瞬项,多出來的SHUTDOWN(關(guān)閉),STOP(停止)何荚,TIDYING(清理)三種中間狀態(tài)能夠更加具體的描述線程池所處的階段囱淋。(后續(xù)會對其擴展講)。

至此餐塘,我描述完了線程池的數(shù)據(jù)結(jié)構(gòu)妥衣,打個比方作為結(jié)束:想像線程池是一個實體的工廠,線程是工廠的員工戒傻,任務(wù)是工廠的加工的原料税手。員工需要工位(容器),員工有正式員工和非正式員工(外包或者臨時工)需纳,正式員工有corePoolSize人芦倒,工廠員工有maximumPoolSize人;原料需要倉庫來暫存(容器)候齿,completedTaskCount描述了原料的消耗量。工廠也有開工闺属,沒工開慌盯,破產(chǎn)清理,倒閉等不同的狀態(tài)掂器。

希望上訴比喻能增強對線程池數(shù)據(jù)結(jié)構(gòu)的理解亚皂。下一篇我們講:

《java線程池算法》

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市国瓮,隨后出現(xiàn)的幾起案子灭必,更是在濱河造成了極大的恐慌,老刑警劉巖乃摹,帶你破解...
    沈念sama閱讀 222,590評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件禁漓,死亡現(xiàn)場離奇詭異,居然都是意外死亡孵睬,警方通過查閱死者的電腦和手機播歼,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,157評論 3 399
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來掰读,“玉大人秘狞,你說我怎么就攤上這事〉讣” “怎么了烁试?”我有些...
    開封第一講書人閱讀 169,301評論 0 362
  • 文/不壞的土叔 我叫張陵,是天一觀的道長拢肆。 經(jīng)常有香客問我减响,道長靖诗,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 60,078評論 1 300
  • 正文 為了忘掉前任辩蛋,我火速辦了婚禮呻畸,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘悼院。我一直安慰自己伤为,他們只是感情好,可當我...
    茶點故事閱讀 69,082評論 6 398
  • 文/花漫 我一把揭開白布据途。 她就那樣靜靜地躺著绞愚,像睡著了一般。 火紅的嫁衣襯著肌膚如雪颖医。 梳的紋絲不亂的頭發(fā)上位衩,一...
    開封第一講書人閱讀 52,682評論 1 312
  • 那天,我揣著相機與錄音熔萧,去河邊找鬼糖驴。 笑死,一個胖子當著我的面吹牛佛致,可吹牛的內(nèi)容都是我干的贮缕。 我是一名探鬼主播,決...
    沈念sama閱讀 41,155評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼俺榆,長吁一口氣:“原來是場噩夢啊……” “哼感昼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起罐脊,我...
    開封第一講書人閱讀 40,098評論 0 277
  • 序言:老撾萬榮一對情侶失蹤定嗓,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后萍桌,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體宵溅,經(jīng)...
    沈念sama閱讀 46,638評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,701評論 3 342
  • 正文 我和宋清朗相戀三年上炎,在試婚紗的時候發(fā)現(xiàn)自己被綠了层玲。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,852評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡反症,死狀恐怖辛块,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情铅碍,我是刑警寧澤润绵,帶...
    沈念sama閱讀 36,520評論 5 351
  • 正文 年R本政府宣布,位于F島的核電站胞谈,受9級特大地震影響尘盼,放射性物質(zhì)發(fā)生泄漏憨愉。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 42,181評論 3 335
  • 文/蒙蒙 一卿捎、第九天 我趴在偏房一處隱蔽的房頂上張望配紫。 院中可真熱鬧,春花似錦午阵、人聲如沸躺孝。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,674評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽植袍。三九已至,卻和暖如春籽懦,著一層夾襖步出監(jiān)牢的瞬間于个,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,788評論 1 274
  • 我被黑心中介騙來泰國打工暮顺, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留厅篓,地道東北人。 一個月前我還...
    沈念sama閱讀 49,279評論 3 379
  • 正文 我出身青樓捶码,卻偏偏與公主長得像羽氮,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子宙项,可洞房花燭夜當晚...
    茶點故事閱讀 45,851評論 2 361

推薦閱讀更多精彩內(nèi)容

  • Java線程池 [toc] 什么是線程池 線程池就是有N個子線程共同在運行的線程組合乏苦。 舉個容易理解的例子:有個線...
    石家志遠閱讀 1,320評論 0 6
  • 前言 掌握線程池是后端程序員的基本要求株扛,相信大家求職面試過程中尤筐,幾乎都會被問到有關(guān)于線程池的問題。我在網(wǎng)上搜集了幾...
    勤奮的碼農(nóng)閱讀 1,290評論 0 1
  • 線程池ThreadPoolExecutor corepoolsize:核心池的大小洞就,默認情況下盆繁,在創(chuàng)建了線程池之后...
    irckwk1閱讀 731評論 0 0
  • 一.線程安全性 線程安全是建立在對于對象狀態(tài)訪問操作進行管理,特別是對共享的與可變的狀態(tài)的訪問 解釋下上面的話: ...
    黃大大吃不胖閱讀 852評論 0 3
  • 就算是身邊的人也會語言傷害你旬蟋,但是也不要想太多油昂,要適當開玩笑,懂得反擊倾贰,不想想太多冕碟,晚安,我可以的匆浙,不知道為什么安寺,...
    林夕_2213閱讀 246評論 0 0