關于線程池ThreadPoolExecutor

線程池的目的:

當并發(fā)請求數(shù)量較多秆麸,而每個線程的執(zhí)行時間比較短爵政,這樣就會頻繁的創(chuàng)建和銷毀線程,加大的開銷蓝谨,降低了系統(tǒng)的效率灌具。而線程池的出現(xiàn)青团,可以使一個任務在使用完畢后不銷毀線程譬巫,還可以在其他任務來到時,不用創(chuàng)建督笆,去使用已有的線程芦昔。線程池解決了線程的生命周期的開銷和資源不足的問題。

當單個任務處理時間較短娃肿」径校或是任務量很大的時候我們可以去使用線程池


線程池的好處:

  • 降低資源消耗。通過重復利用已創(chuàng)建的線程降低線程創(chuàng)建和銷毀造成的消耗料扰。

  • 提高響應速度凭豪。當任務到達時,任務可以不需要的等到線程創(chuàng)建就能立即執(zhí)行晒杈。

  • 提高線程的可管理性嫂伞。線程是稀缺資源,如果無限制的創(chuàng)建,不僅會消耗系統(tǒng)資源帖努,還會降低系統(tǒng)的穩(wěn)定性撰豺,使用線程池可以進行統(tǒng)一的分配,調優(yōu)和監(jiān)控拼余。

public ThreadPoolExecutor(int corePoolSize,
                          int maximumPoolSize,
                          long keepAliveTime,
                          TimeUnit unit,
                          BlockingQueue<Runnable> workQueue,
                          ThreadFactory threadFactory,
                          RejectedExecutionHandler handler) {
    if (corePoolSize < 0 ||
        maximumPoolSize <= 0 ||
        maximumPoolSize < corePoolSize ||
        keepAliveTime < 0)
        throw new IllegalArgumentException();
    if (workQueue == null || threadFactory == null || handler == null)
        throw new NullPointerException();
    this.corePoolSize = corePoolSize;
    this.maximumPoolSize = maximumPoolSize;
    this.workQueue = workQueue;
    this.keepAliveTime = unit.toNanos(keepAliveTime);
    this.threadFactory = threadFactory;
    this.handler = handler;
}

corePoolSize:線程池維護線程的最少數(shù)量

maximumPoolSize:線程池維護線程的最大數(shù)量

對于每一個任務提交污桦,判斷的順序為 corePoolSize --> workQueue --> maximumPoolSize。

當前線程數(shù)<corePoolSize 那么即時有空閑線程也要創(chuàng)建新的線程匙监。

當前線程數(shù) >核心線程數(shù)凡橱,阻塞隊列為空,那么此時將任務放到隊列中亭姥,等到其他任務完成以后再運行它們梭纹。有空余的線程將從隊列中取。

當前線程數(shù) >核心線程數(shù), 阻塞隊列滿致份,但線程池中的數(shù)量小于最大線程數(shù)变抽,建新的線程來處理添加的任務。

當前線程數(shù) >核心線程數(shù), 阻塞隊列滿氮块,但線程池中的數(shù)量等于最大線程數(shù)绍载,使用handler處理被拒絕的任務。

當線程池中的線程數(shù)量大于corePoolSize時滔蝉,如果某線程空閑時間超過keepAliveTime击儡,線程將被終止。這樣蝠引,線程池可以動態(tài)的調整池中的線程數(shù)阳谍。

5401975-4493820fd31f3127.png
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市螃概,隨后出現(xiàn)的幾起案子矫夯,更是在濱河造成了極大的恐慌,老刑警劉巖吊洼,帶你破解...
    沈念sama閱讀 218,036評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件训貌,死亡現(xiàn)場離奇詭異,居然都是意外死亡冒窍,警方通過查閱死者的電腦和手機递沪,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,046評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來综液,“玉大人款慨,你說我怎么就攤上這事∶ǎ” “怎么了檩奠?”我有些...
    開封第一講書人閱讀 164,411評論 0 354
  • 文/不壞的土叔 我叫張陵约素,是天一觀的道長。 經(jīng)常有香客問我笆凌,道長圣猎,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,622評論 1 293
  • 正文 為了忘掉前任乞而,我火速辦了婚禮送悔,結果婚禮上,老公的妹妹穿的比我還像新娘爪模。我一直安慰自己欠啤,他們只是感情好,可當我...
    茶點故事閱讀 67,661評論 6 392
  • 文/花漫 我一把揭開白布屋灌。 她就那樣靜靜地躺著洁段,像睡著了一般。 火紅的嫁衣襯著肌膚如雪共郭。 梳的紋絲不亂的頭發(fā)上祠丝,一...
    開封第一講書人閱讀 51,521評論 1 304
  • 那天,我揣著相機與錄音除嘹,去河邊找鬼写半。 笑死,一個胖子當著我的面吹牛尉咕,可吹牛的內容都是我干的叠蝇。 我是一名探鬼主播,決...
    沈念sama閱讀 40,288評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼年缎,長吁一口氣:“原來是場噩夢啊……” “哼悔捶!你這毒婦竟也來了?” 一聲冷哼從身側響起单芜,我...
    開封第一講書人閱讀 39,200評論 0 276
  • 序言:老撾萬榮一對情侶失蹤蜕该,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后缓溅,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體蛇损,經(jīng)...
    沈念sama閱讀 45,644評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡赁温,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,837評論 3 336
  • 正文 我和宋清朗相戀三年坛怪,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片股囊。...
    茶點故事閱讀 39,953評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡袜匿,死狀恐怖,靈堂內的尸體忽然破棺而出稚疹,到底是詐尸還是另有隱情居灯,我是刑警寧澤祭务,帶...
    沈念sama閱讀 35,673評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站怪嫌,受9級特大地震影響义锥,放射性物質發(fā)生泄漏。R本人自食惡果不足惜岩灭,卻給世界環(huán)境...
    茶點故事閱讀 41,281評論 3 329
  • 文/蒙蒙 一拌倍、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧噪径,春花似錦柱恤、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,889評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至车摄,卻和暖如春寺谤,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背吮播。 一陣腳步聲響...
    開封第一講書人閱讀 33,011評論 1 269
  • 我被黑心中介騙來泰國打工矗漾, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人薄料。 一個月前我還...
    沈念sama閱讀 48,119評論 3 370
  • 正文 我出身青樓敞贡,卻偏偏與公主長得像,于是被迫代替她去往敵國和親摄职。 傳聞我的和親對象是個殘疾皇子誊役,可洞房花燭夜當晚...
    茶點故事閱讀 44,901評論 2 355

推薦閱讀更多精彩內容