日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術(shù)文章
文章詳情頁

java高級應(yīng)用:線程池的全面講解(干貨)

瀏覽:38日期:2022-08-16 09:25:20

java高級應(yīng)用:線程池的全面講解(干貨)

什么是線程池?

很簡單,簡單看名字就知道是裝有線程的池子,我們可以把要執(zhí)行的多線程交給線程池來處理,和連接池的概念一樣,通過維護一定數(shù)量的線程池來達到多個線程的復(fù)用。

線程池的好處

我們知道不用線程池的話,每個線程都要通過new Thread(xxRunnable).start()的方式來創(chuàng)建并運行一個線程,線程少的話這不會是問題,而真實環(huán)境可能會開啟多個線程讓系統(tǒng)和程序達到最佳效率,當線程數(shù)達到一定數(shù)量就會耗盡系統(tǒng)的CPU和內(nèi)存資源,也會造成GC頻繁收集和停頓,因為每次創(chuàng)建和銷毀一個線程都是要消耗系統(tǒng)資源的,如果為每個任務(wù)都創(chuàng)建線程這無疑是一個很大的性能瓶頸。

所以,線程池中的線程復(fù)用極大節(jié)省了系統(tǒng)資源,當線程一段時間不再有任務(wù)處理時它也會自動銷毀,而不會長駐內(nèi)存。

線程池核心類

在java.util.concurrent包中我們能找到線程池的定義,其中ThreadPoolExecutor是我們線程池核心類,首先看看線程池類的主要參數(shù)有哪些。

java高級應(yīng)用:線程池的全面講解(干貨)

corePoolSize:線程池的核心大小,也可以理解為最小的線程池大小。

maximumPoolSize:最大線程池大小。

keepAliveTime:空余線程存活時間,指的是超過corePoolSize的空余線程達到多長時間才進行銷毀。

unit:銷毀時間單位。

workQueue:存儲等待執(zhí)行線程的工作隊列。

threadFactory:創(chuàng)建線程的工廠,一般用默認即可。

handler:拒絕策略,當工作隊列、線程池全已滿時如何拒絕新任務(wù),默認拋出異常。

線程池工作流程

1、如果線程池中的線程小于corePoolSize時就會創(chuàng)建新線程直接執(zhí)行任務(wù)。

2、如果線程池中的線程大于corePoolSize時就會暫時把任務(wù)存儲到工作隊列workQueue中等待執(zhí)行。

3、如果工作隊列workQueue也滿時:當線程數(shù)小于最大線程池數(shù)maximumPoolSize時就會創(chuàng)建新線程來處理,而線程數(shù)大于等于最大線程池數(shù)maximumPoolSize時就會執(zhí)行拒絕策略。

線程池分類

Executors是jdk里面提供的創(chuàng)建線程池的工廠類,它默認提供了4種常用的線程池應(yīng)用,而不必我們?nèi)ブ貜?fù)構(gòu)造。

newFixedThreadPool

固定線程池,核心線程數(shù)和最大線程數(shù)固定相等,而空閑存活時間為0毫秒,說明此參數(shù)也無意義,工作隊列為最大為Integer.MAX_VALUE大小的阻塞隊列。當執(zhí)行任務(wù)時,如果線程都很忙,就會丟到工作隊列等有空閑線程時再執(zhí)行,隊列滿就執(zhí)行默認的拒絕策略。

java高級應(yīng)用:線程池的全面講解(干貨)

newCachedThreadPool

帶緩沖線程池,從構(gòu)造看核心線程數(shù)為0,最大線程數(shù)為Integer最大值大小,超過0個的空閑線程在60秒后銷毀,SynchronousQueue這是一個直接提交的隊列,意味著每個新任務(wù)都會有線程來執(zhí)行,如果線程池有可用線程則執(zhí)行任務(wù),沒有的話就創(chuàng)建一個來執(zhí)行,線程池中的線程數(shù)不確定,一般建議執(zhí)行速度較快較小的線程,不然這個最大線程池邊界過大容易造成內(nèi)存溢出。

java高級應(yīng)用:線程池的全面講解(干貨)

newSingleThreadExecutor

單線程線程池,核心線程數(shù)和最大線程數(shù)均為1,空閑線程存活0毫秒同樣無意思,意味著每次只執(zhí)行一個線程,多余的先存儲到工作隊列,一個一個執(zhí)行,保證了線程的順序執(zhí)行。

java高級應(yīng)用:線程池的全面講解(干貨)

newScheduledThreadPool

調(diào)度線程池,即按一定的周期執(zhí)行任務(wù),即定時任務(wù),對ThreadPoolExecutor進行了包裝而已。

java高級應(yīng)用:線程池的全面講解(干貨)

拒絕策略AbortPolicy

簡單粗暴,直接拋出拒絕異常,這也是默認的拒絕策略。

java高級應(yīng)用:線程池的全面講解(干貨)

java高級應(yīng)用:線程池的全面講解(干貨)

CallerRunsPolicy

如果線程池未關(guān)閉,則會在調(diào)用者線程中直接執(zhí)行新任務(wù),這會導(dǎo)致主線程提交線程性能變慢。

java高級應(yīng)用:線程池的全面講解(干貨)

DiscardPolicy

從方法看沒做任務(wù)操作,即表示不處理新任務(wù),即丟棄。

java高級應(yīng)用:線程池的全面講解(干貨)

DiscardOldestPolicy

拋棄最老的任務(wù),就是從隊列取出最老的任務(wù)然后放入新的任務(wù)進行執(zhí)行。

java高級應(yīng)用:線程池的全面講解(干貨)

如何提交線程

如可以先隨便定義一個固定大小的線程池

ExecutorService es = Executors.newFixedThreadPool(3);

提交一個線程

es.submit(xxRunnble);es.execute(xxRunnble);submit和execute分別有什么區(qū)別呢?

execute沒有返回值,如果不需要知道線程的結(jié)果就使用execute方法,性能會好很多。

submit返回一個Future對象,如果想知道線程結(jié)果就使用submit提交,而且它能在主線程中通過Future的get方法捕獲線程中的異常。

如何關(guān)閉線程池

es.shutdown();

不再接受新的任務(wù),之前提交的任務(wù)等執(zhí)行結(jié)束再關(guān)閉線程池。

es.shutdownNow();

不再接受新的任務(wù),試圖停止池中的任務(wù)再關(guān)閉線程池,返回所有未處理的線程list列表。

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持好吧啦網(wǎng)。如有錯誤或未考慮完全的地方,望不吝賜教。

標簽: Java
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
久久国产福利| 先锋影音久久久| 青草国产精品| 久久国内精品自在自线400部| 99精品美女| 亚洲自拍另类| 久久精品av麻豆的观看方式| 国产精品99久久免费观看| 国产精品第一| 亚洲最新无码中文字幕久久 | 免费不卡中文字幕在线| 亚洲精品一区二区在线看| 亚洲一区二区毛片| 欧美有码在线| 国产精品专区免费| 国产亚洲一级| 国产亚洲欧美日韩在线观看一区二区 | 美国欧美日韩国产在线播放| 亚洲精品字幕| 久久99视频| 国产在线不卡| 日韩成人一级| 神马午夜在线视频| 免费观看在线综合色| 国产精品777777在线播放 | 午夜国产一区二区| 日韩高清在线不卡| 国产69精品久久| 亚洲欧美日韩国产一区二区| 久久久久久亚洲精品美女| 激情久久久久久| 日韩不卡一二三区| 日韩电影免费在线观看| 蜜桃久久久久久久| 中文字幕在线官网| 亚洲三级av| 日韩一区二区三区免费播放| 亚洲尤物av| 麻豆精品av| 亚洲免费一区二区| 国产精品麻豆成人av电影艾秋| 久久久久国产| 国产精品极品国产中出| 夜夜嗨一区二区| 超碰在线99| 青青在线精品| 亚洲国产成人精品女人| 国产精品视频首页| 亚洲欧美久久| 日韩成人高清| 国产激情欧美| 亚洲毛片视频| 国产亚洲在线| 成人污污视频| 日本不卡的三区四区五区| 精品日韩视频| 久久亚洲黄色| 欧美精品国产| 亚洲精品国产精品粉嫩| 欧美va天堂在线| 成人午夜在线| 国产精品一站二站| 午夜久久av| 石原莉奈一区二区三区在线观看| 精品捆绑调教一区二区三区| 美日韩一区二区三区| 日韩精品一区二区三区中文在线| 激情婷婷亚洲| 国产一区二区三区黄网站| 欧美一级二级三级视频| 免费观看在线色综合| 中文一区二区| 久久精品青草| 岛国av在线播放| 国产欧美三级| 欧美日韩国产一区二区在线观看| 久久亚洲美女| 国产农村妇女精品一二区| 美女毛片一区二区三区四区| 亚洲欧洲美洲av| 国内不卡的一区二区三区中文字幕| 国产亚洲一区| 欧美一级网址| 水蜜桃久久夜色精品一区的特点| 欧美亚洲国产激情| 99久久九九| 欧美亚洲国产一区| 欧美 日韩 国产一区二区在线视频 | 久久国产日韩| 秋霞国产精品| 久久在线免费| 99tv成人| 亚洲国产一区二区在线观看 | 老鸭窝亚洲一区二区三区| 黄色精品网站| 爽好久久久欧美精品| 亚洲一级大片| 日本aⅴ精品一区二区三区| 日本欧美一区| 国产精品扒开腿做爽爽爽软件| 国产欧美日韩精品一区二区免费| 国产九一精品| 国产一区一一区高清不卡| 97精品国产福利一区二区三区| 丝袜美腿诱惑一区二区三区| 亚洲大片在线| 亚洲大全视频| 久久亚洲风情| 日韩国产一二三区| 国产激情欧美| 欧美aa在线观看| 最新日韩av| 亚洲三级精品| 国产精品丝袜在线播放| 首页国产精品| 夜夜嗨av一区二区三区网站四季av| 亚洲五月综合| 久久这里只有| 国产一区日韩一区| 亚洲精品福利| 精品国产欧美日韩| 日韩中文在线播放| 亚洲欧美日本日韩| 国产亚洲欧美日韩精品一区二区三区| 久久一区国产| 亚洲黄色影院| 国产精品亚洲欧美日韩一区在线| 都市激情国产精品| 噜噜噜躁狠狠躁狠狠精品视频 | 免费日韩av| 日本午夜精品| 国产精品原创| 免费在线观看日韩欧美| 国产精品v日韩精品v欧美精品网站| 日韩伦理福利| 首页欧美精品中文字幕| 国产日韩欧美一区在线| 91精品xxx在线观看| 亚洲资源网站| 成人精品国产亚洲| 国产农村妇女精品一区二区| 国产精品主播| 婷婷综合五月| 美腿丝袜在线亚洲一区| 欧美网站在线| 日韩黄色av| 99久久亚洲精品蜜臀| 国产日韩中文在线中文字幕| 久久久亚洲一区| 国产伦理一区| 中文一区在线| 一区二区三区四区日本视频| 综合国产精品| 快播电影网址老女人久久| 亚久久调教视频| 欧洲av不卡| 欧美一区91| 午夜宅男久久久| 激情黄产视频在线免费观看| 日本va欧美va精品发布| 国产麻豆久久| 麻豆精品国产91久久久久久| 亚洲网址在线观看| 欧美精品资源| 蜜桃久久久久| 日韩**一区毛片| 在线亚洲精品| 91精品一区二区三区综合在线爱| 国产精品nxnn| 亚洲精品婷婷| 欧美日韩在线播放视频| 美女精品久久| 日韩欧美四区| 亚洲欧美久久| 1024精品一区二区三区| 久久香蕉网站| 国产精选久久| 7777精品| 亚洲精品一二| 日韩精品一二三四| 国产尤物精品| 成人看片网站| 成人亚洲欧美| 欧美国产偷国产精品三区| 国产精品地址| 日韩高清二区| 亚洲三级观看| 中文字幕一区二区av| 悠悠资源网久久精品| 久久蜜桃精品| 亚洲精品福利电影| 国产专区精品| 福利一区和二区| 欧美好骚综合网| 91亚洲国产成人久久精品| 麻豆一区二区三区| 国产精品qvod| 麻豆成人在线观看| 欧美国产不卡| 精品视频一区二区三区在线观看|