線(xiàn)程池學(xué)習(xí)

  • Java線(xiàn)程池相關(guān)類(lèi)

Java線(xiàn)程池相關(guān)類(lèi)

Executor
定義了最常見(jiàn)的線(xiàn)程池接口肢娘,execute(Runnable command)揪漩。

public interface Executor {
    void execute(Runnable command);
}

ExecutorService
線(xiàn)程池接口類(lèi)寒屯。

ThreadPoolEexcutor
最為常用的線(xiàn)程池互捌。

/**
 * corePoolSize : 活躍線(xiàn)程數(shù)
 * maximumPoolSize : 線(xiàn)程總數(shù)
 * keepAliveTime,unit : 非活躍線(xiàn)程在keepAliveTime個(gè)unit之后會(huì)被回收
 * workQueue : 工作隊(duì)列
 */
public ThreadPoolExecutor(int corePoolSize,
                              int maximumPoolSize,
                              long keepAliveTime,
                              TimeUnit unit,
                              BlockingQueue<Runnable> workQueue) {}

Executors
工廠(chǎng)類(lèi)辐棒,利用工廠(chǎng)方法可以生產(chǎn)成各種各樣的線(xiàn)程池病曾,生產(chǎn)出各種參數(shù)的ThreadPoolExecutor,比如newFixedThreadPool(int nThreads):

    public static ExecutorService newFixedThreadPool(int nThreads) {
        return new ThreadPoolExecutor(nThreads, nThreads,
                                      0L, TimeUnit.MILLISECONDS,
                                      new LinkedBlockingQueue<Runnable>());
    }
  • ThreadPoolExecutor

  1. 當(dāng)線(xiàn)程池執(zhí)行一個(gè)runnable時(shí)漾根,它會(huì)先去檢查線(xiàn)程池里的線(xiàn)程數(shù)是否小于corePool的定義的線(xiàn)程數(shù)泰涂,如果小于它,不管這些線(xiàn)程是否空閑辐怕,都會(huì)不斷創(chuàng)建新線(xiàn)程逼蒙,直到線(xiàn)程池里的線(xiàn)程數(shù)等于corePool。
  2. 當(dāng)線(xiàn)程池的線(xiàn)程數(shù)已經(jīng)等于corePool寄疏,如果還有新任務(wù)是牢,但是線(xiàn)程池里面有空閑線(xiàn)程,那么會(huì)用這些空閑線(xiàn)程執(zhí)行這些任務(wù)陕截。
  3. 如果線(xiàn)程池里面已經(jīng)沒(méi)有空閑線(xiàn)程了驳棱,會(huì)把任務(wù)放到工作隊(duì)列里面;當(dāng)有線(xiàn)程閑下來(lái)的時(shí)候农曲,會(huì)從工作隊(duì)列里面取任務(wù)下來(lái)執(zhí)行社搅。
  4. 當(dāng)沒(méi)有空閑線(xiàn)程,并且工作隊(duì)列也已經(jīng)滿(mǎn)了乳规。這時(shí)會(huì)從創(chuàng)建新線(xiàn)程來(lái)執(zhí)行這些任務(wù)形葬,直到線(xiàn)程池的線(xiàn)程數(shù)等于maximumPool
  5. 如果工作的線(xiàn)程數(shù)已經(jīng)達(dá)到maximumPoolSize,并且工作隊(duì)列也已經(jīng)被塞滿(mǎn)了暮的,這時(shí)如果還來(lái)新任務(wù)的話(huà)就會(huì)報(bào)異常笙以。
  6. 當(dāng)線(xiàn)程不再執(zhí)行任務(wù)的時(shí)候,過(guò)了keepAliveTime冻辩,如果線(xiàn)程池總數(shù)大于corePoolSize猖腕,就會(huì)被回收,直到線(xiàn)程池的總數(shù)等于corePoolSize微猖。

假設(shè)corePool = 3谈息, maximumPool = 6缘屹, 工作隊(duì)列大小為10個(gè)凛剥,假設(shè)這些線(xiàn)程都需要足夠的時(shí)間才能執(zhí)行完畢,當(dāng)加入20個(gè)任務(wù)的時(shí)候轻姿,線(xiàn)程執(zhí)行順序應(yīng)該是這樣子的:先執(zhí)行1-3犁珠,然后把4-13放到工作隊(duì)列里面逻炊,然后再執(zhí)行14-16,任務(wù)17-20會(huì)拋出異常犁享。

  • Callable和Future

Callable 和 Runnable都可以作為線(xiàn)程的執(zhí)行任務(wù)余素,只是Callable有返回值,而Runnable沒(méi)有返回值炊昆;Callable的返回值可以用Future來(lái)接收桨吊,然后用get()來(lái)使用。比如:

        ExecutorService pool = Executors.newFixedThreadPool(10);
        Future<String> future = pool.submit(new Callable<String>() {
            @Override
            public String call() throws Exception {
                return Thread.currentThread().getName();
            }
        });
        System.out.println(future.get());

future.get()會(huì)使線(xiàn)程阻塞凤巨,一直到call執(zhí)行完视乐。

FutureTask

        ExecutorService pool = Executors.newFixedThreadPool(10);
        FutureTask futureTask = new FutureTask(new Callable<String>() {
            @Override
            public String call() throws Exception {
                return Thread.currentThread().getName();
            }
        });
        pool.submit(futureTask);
        //用普通線(xiàn)程的方式
        new Thread(futureTask).start();
        
        if(futureTask.isDone()){
            System.out.println(futureTask.get());
        }
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市敢茁,隨后出現(xiàn)的幾起案子佑淀,更是在濱河造成了極大的恐慌,老刑警劉巖彰檬,帶你破解...
    沈念sama閱讀 221,695評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件伸刃,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡逢倍,警方通過(guò)查閱死者的電腦和手機(jī)捧颅,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,569評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)较雕,“玉大人隘道,你說(shuō)我怎么就攤上這事±砂剩” “怎么了谭梗?”我有些...
    開(kāi)封第一講書(shū)人閱讀 168,130評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀(guān)的道長(zhǎng)宛蚓。 經(jīng)常有香客問(wèn)我激捏,道長(zhǎng),這世上最難降的妖魔是什么凄吏? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,648評(píng)論 1 297
  • 正文 為了忘掉前任远舅,我火速辦了婚禮,結(jié)果婚禮上痕钢,老公的妹妹穿的比我還像新娘图柏。我一直安慰自己,他們只是感情好任连,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,655評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布蚤吹。 她就那樣靜靜地躺著拿撩,像睡著了一般柒莉。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 52,268評(píng)論 1 309
  • 那天妆兑,我揣著相機(jī)與錄音昙读,去河邊找鬼每强。 笑死稿静,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的桶雀。 我是一名探鬼主播矿酵,決...
    沈念sama閱讀 40,835評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼矗积!你這毒婦竟也來(lái)了坏瘩?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,740評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤漠魏,失蹤者是張志新(化名)和其女友劉穎倔矾,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體柱锹,經(jīng)...
    沈念sama閱讀 46,286評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡哪自,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,375評(píng)論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了禁熏。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片壤巷。...
    茶點(diǎn)故事閱讀 40,505評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖瞧毙,靈堂內(nèi)的尸體忽然破棺而出胧华,到底是詐尸還是另有隱情,我是刑警寧澤宙彪,帶...
    沈念sama閱讀 36,185評(píng)論 5 350
  • 正文 年R本政府宣布矩动,位于F島的核電站,受9級(jí)特大地震影響释漆,放射性物質(zhì)發(fā)生泄漏悲没。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,873評(píng)論 3 333
  • 文/蒙蒙 一男图、第九天 我趴在偏房一處隱蔽的房頂上張望示姿。 院中可真熱鬧,春花似錦逊笆、人聲如沸栈戳。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,357評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)子檀。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間命锄,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,466評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工偏化, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留脐恩,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,921評(píng)論 3 376
  • 正文 我出身青樓侦讨,卻偏偏與公主長(zhǎng)得像驶冒,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子韵卤,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,515評(píng)論 2 359

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

  • 本文是我自己在秋招復(fù)習(xí)時(shí)的讀書(shū)筆記骗污,整理的知識(shí)點(diǎn),也是為了防止忘記沈条,尊重勞動(dòng)成果需忿,轉(zhuǎn)載注明出處哦!如果你也喜歡蜡歹,那...
    波波波先森閱讀 11,273評(píng)論 4 56
  • 一屋厘、戰(zhàn)國(guó)時(shí)代的形勢(shì) 春秋戰(zhàn)國(guó)時(shí)代是一個(gè)英雄輩出的傳奇時(shí)代,提到戰(zhàn)國(guó)月而,就不能不提春秋汗洒。周朝封邦建國(guó),以宗法制為...
    fb02e35a0b32閱讀 774評(píng)論 16 23
  • 椿:有的魚(yú)是永遠(yuǎn)都關(guān)不住的父款,因?yàn)樗麄儗儆谔炜找绨e人的理解與不理解又有什么關(guān)系?因?yàn)槲抑牢乙サ暮┰埽翘炜铡?我們...
    瑯?gòu)志站?/span>閱讀 376評(píng)論 0 0
  • 心者世杀,五臟六腑之主也,憂(yōu)愁則心動(dòng)肝集,心動(dòng)則五臟六腑皆搖玫坛。 ——黃帝內(nèi)經(jīng) 中醫(yī)的最高境界是養(yǎng)生 養(yǎng)生的最高境界是養(yǎng)心 ...
    愜意永不放棄閱讀 213評(píng)論 0 0
  • 自古多情空余恨湿镀, 亂世桃花逐水流, 落花有意隨流水伐憾, 流水無(wú)心戀落花勉痴。 花謝花開(kāi)花滿(mǎn)天, 紅消香斷有誰(shuí)憐树肃? 一世繁...
    素顏之愛(ài)情獨(dú)角戲閱讀 357評(píng)論 0 0