摘要:伸縮流程主要是三個(gè)變量。也就是說就是線程池大小,是線程池的一種補(bǔ)救措施,即任務(wù)量突然過大時(shí)的一種補(bǔ)救措施。只是一個(gè)用來起記錄作用的變量,用來記錄線程池中曾經(jīng)有過的最大線程數(shù)目,跟線程池的容量沒有任何關(guān)系。參考聊聊并發(fā)三線程池的分析和使用
伸縮流程
主要是corePoolSize、maximumPoolSize、largestPoolSize三個(gè)變量。
比喻假如有一個(gè)工廠,工廠里面有10個(gè)工人,每個(gè)工人同時(shí)只能做一件任務(wù)。
因此只要當(dāng)10個(gè)工人中有工人是空閑的,來了任務(wù)就分配給空閑的工人做;
當(dāng)10個(gè)工人都有任務(wù)在做時(shí),如果還來了任務(wù),就把任務(wù)進(jìn)行排隊(duì)等待;
如果說新任務(wù)數(shù)目增長的速度遠(yuǎn)遠(yuǎn)大于工人做任務(wù)的速度,那么此時(shí)工廠主管可能會想補(bǔ)救措施,比如重新招4個(gè)臨時(shí)工人進(jìn)來;
然后就將任務(wù)也分配給這4個(gè)臨時(shí)工人做;
如果說著14個(gè)工人做任務(wù)的速度還是不夠,此時(shí)工廠主管可能就要考慮不再接收新的任務(wù)或者拋棄前面的一些任務(wù)了。
當(dāng)這14個(gè)工人當(dāng)中有人空閑時(shí),而新任務(wù)增長的速度又比較緩慢,工廠主管可能就考慮辭掉4個(gè)臨時(shí)工了,只保持原來的10個(gè)工人,畢竟請額外的工人是要花錢的。
解讀這個(gè)例子中的corePoolSize就是10,而maximumPoolSize就是14(10+4)。
也就是說corePoolSize就是線程池大小,maximumPoolSize是線程池的一種補(bǔ)救措施,即任務(wù)量突然過大時(shí)的一種補(bǔ)救措施。
largestPoolSize只是一個(gè)用來起記錄作用的變量,用來記錄線程池中曾經(jīng)有過的最大線程數(shù)目,跟線程池的容量沒有任何關(guān)系。
參考聊聊并發(fā)(三)Java線程池的分析和使用
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/65839.html
摘要:本文主要內(nèi)容為簡單總結(jié)中線程池的相關(guān)信息。方法簇方法簇用于創(chuàng)建固定線程數(shù)的線程池。三種常見線程池的對比上文總結(jié)了工具類創(chuàng)建常見線程池的方法,現(xiàn)對三種線程池區(qū)別進(jìn)行比較。 概述 線程可認(rèn)為是操作系統(tǒng)可調(diào)度的最小的程序執(zhí)行序列,一般作為進(jìn)程的組成部分,同一進(jìn)程中多個(gè)線程可共享該進(jìn)程的資源(如內(nèi)存等)。在單核處理器架構(gòu)下,操作系統(tǒng)一般使用分時(shí)的方式實(shí)現(xiàn)多線程;在多核處理器架構(gòu)下,多個(gè)線程能夠...
摘要:是一個(gè)中的工具類提供工廠方法來創(chuàng)建不同類型的線程池從上圖中也可以看出的創(chuàng)建線程池的方法創(chuàng)建出來的線程池都實(shí)現(xiàn)了接口常用方法有以下幾個(gè)創(chuàng)建固定數(shù)目線程的線程池超出的線程會在隊(duì)列中等待創(chuàng)建一個(gè)可緩存線程池如果線程池長度超過處理需要可靈活回收空閑 Executors Executors 是一個(gè)Java中的工具類. 提供工廠方法來創(chuàng)建不同類型的線程池. showImg(https://segm...
摘要:創(chuàng)建方法最大線程數(shù)即源碼單線程化的線程池有且僅有一個(gè)工作線程執(zhí)行任務(wù)所有任務(wù)按照指定順序執(zhí)行,即遵循隊(duì)列的入隊(duì)出隊(duì)規(guī)則創(chuàng)建方法源碼還有一個(gè)結(jié)合了和,就不介紹了,基本不用。 *本篇文章已授權(quán)微信公眾號 guolin_blog (郭霖)獨(dú)家發(fā)布 為什么用線程池 創(chuàng)建/銷毀線程伴隨著系統(tǒng)開銷,過于頻繁的創(chuàng)建/銷毀線程,會很大程度上影響處理效率 >例如: > >記創(chuàng)建線程消耗時(shí)間T1,執(zhí)行...
摘要:如果線程池中的線程數(shù)量已經(jīng)超過核心線程數(shù),這時(shí)候任務(wù)就會被插入到任務(wù)隊(duì)列中排隊(duì)等待執(zhí)行。如果線程池中的數(shù)量達(dá)到了所規(guī)定的最大值,那么就會拒絕執(zhí)行此任務(wù),這時(shí)候就會調(diào)用中的方法來通知調(diào)用者。 目錄介紹 1.遇到的問題和需求 1.1 遇到的問題有哪些 1.2 遇到的需求 1.3 多線程通過實(shí)現(xiàn)Runnable弊端 1.4 為什么要用線程池 2.封裝庫具有的功能 2.1 常用的功能 3.封...
摘要:一個(gè)線程池包含很多準(zhǔn)備運(yùn)行的空閑線程,每當(dāng)執(zhí)行完畢后,線程不會死亡而是回到線程池準(zhǔn)備為下一個(gè)請求提供服務(wù)。另一個(gè)使用線程池的理由是減少并發(fā)線程數(shù)。創(chuàng)建大量線程會大大降低性能甚至拖垮虛擬機(jī)。 【Future的概念 interface Future ,表示異步計(jì)算的結(jié)果,F(xiàn)uture有個(gè)get方法而獲取結(jié)果只有在計(jì)算完成時(shí)獲取,否則會一直阻塞直到任務(wù)轉(zhuǎn)入完成狀態(tài),然后會返回結(jié)果或者拋出異常...
閱讀 5055·2021-07-25 21:37
閱讀 696·2019-08-30 15:53
閱讀 3361·2019-08-29 18:47
閱讀 696·2019-08-29 15:39
閱讀 2143·2019-08-29 13:12
閱讀 1808·2019-08-29 12:43
閱讀 2999·2019-08-26 11:52
閱讀 1898·2019-08-26 10:15