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

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

Java并發(fā)線程之線程池的知識總結(jié)

瀏覽:46日期:2022-08-17 16:01:47

初始化線程池后,把任務(wù)丟進(jìn)去,等待調(diào)度就可以了,使用起來比較方便。JAVA中Thread是線程類,不建議直接使用Thread執(zhí)行任務(wù),在并發(fā)數(shù)量比較多的情況下,每個線程都是執(zhí)行一個很短的時間就任務(wù)結(jié)束了,這樣頻繁創(chuàng)建線程會大大降低系統(tǒng)的效率,因為頻繁的創(chuàng)建和銷毀線程需要時間。而線程池可以復(fù)用,就是執(zhí)行完一個任務(wù),并不銷毀,而是可以繼續(xù)執(zhí)行其它任務(wù)。

Thread的弊端 每次new Thread() 創(chuàng)建對象,性能差。 線程缺乏統(tǒng)一管理,可能無限制創(chuàng)建線程,相互競爭,有可能占用過多系統(tǒng)資源導(dǎo)致死機(jī)或OOM。 不能多執(zhí)行,定期執(zhí)行,線程中斷 線程池的優(yōu)點 重用存在的線程,減少對象創(chuàng)建,消亡的開銷,性能佳,降低資源消耗。 可以控制最大并發(fā)線程數(shù),提高系統(tǒng)資源利用率,同時避免過多資源競爭,避免阻塞,提高響應(yīng)速度。 提供定時執(zhí)行,定期執(zhí)行,單線程,并發(fā)數(shù)控制等功能,以提高線程的可管理性。

阿里發(fā)布的 Java 開發(fā)手冊中強(qiáng)制線程池不允許使用 Executors 去創(chuàng)建,而是通過 ThreadPoolExecutor 的方式,這樣的處理方式讓寫的同學(xué)更加明確線程池的運行規(guī)則,規(guī)避資源耗盡的風(fēng)險。Executors利用工廠模式向我們提供了4種線程池實現(xiàn)方式,但是并不推薦使用,原因是使用Executors創(chuàng)建線程池不會傳入相關(guān)參數(shù)而使用默認(rèn)值所以我們常常忽略了那些重要的參數(shù)(線程池大小、緩沖隊列的類型等),而且默認(rèn)使用的參數(shù)會導(dǎo)致資源浪費,不可取。

ThreadPoolExecutor介紹構(gòu)造函數(shù)和參數(shù)

Java并發(fā)線程之線程池的知識總結(jié)

java.uitl.concurrent.ThreadPoolExecutor類是線程池中最核心的一個類。

public class ThreadPoolExecutor extends AbstractExecutorService { /** 構(gòu)造函數(shù) 1 */ public ThreadPoolExecutor(int corePoolSize,int maximumPoolSize,long keepAliveTime,TimeUnit unit,BlockingQueue<Runnable> workQueue) {} /** 構(gòu)造函數(shù) 2 */ public ThreadPoolExecutor(int corePoolSize,int maximumPoolSize,long keepAliveTime,TimeUnit unit,BlockingQueue<Runnable> workQueue,ThreadFactory threadFactory) {} /** 構(gòu)造函數(shù) 3 */ public ThreadPoolExecutor(int corePoolSize,int maximumPoolSize,long keepAliveTime,TimeUnit unit,BlockingQueue<Runnable> workQueue,RejectedExecutionHandler handler) {} /** 構(gòu)造函數(shù) 4 */ public ThreadPoolExecutor(int corePoolSize,int maximumPoolSize,long keepAliveTime,TimeUnit unit,BlockingQueue<Runnable> workQueue,ThreadFactory threadFactory,RejectedExecutionHandler handler) {}}

ThreadPoolExecutor類中提供了四個構(gòu)造方法,在構(gòu)造函數(shù)4中,參數(shù)最多,通過觀察其他3個構(gòu)造函數(shù),發(fā)現(xiàn)前面三個構(gòu)造器都是調(diào)用的第四個構(gòu)造器進(jìn)行的初始化工作。

Java并發(fā)線程之線程池的知識總結(jié)

構(gòu)造器中各個參數(shù)的含義

corePoolSize 核心線程池的大小,在創(chuàng)建了線程池后,默認(rèn)情況下,線程池中沒有任何的線程池,而是等任務(wù)過來了再去創(chuàng)建線程執(zhí)行任務(wù)。除非調(diào)用了預(yù)創(chuàng)建線程的方法,即在沒有任務(wù)到來之前就創(chuàng)建corePoolSize個線程或者一個線程。當(dāng)線程池中的線程數(shù)量到達(dá)corePoolSize后,就會把到達(dá)的任務(wù)放到緩存隊列里面。

prestartCoreThread() : 預(yù)創(chuàng)建一個核心線程,使其閑置等待工作。 prestartAllCoreThreads() : 啟動所有核心線程,導(dǎo)致它們空閑地等待工作。

maxnumPoolSize 線程池中最大的線程數(shù),是一個非常重要的參數(shù),它表示在線程池中最多能創(chuàng)建多少線程。keepAliveTime 表示線程在沒有任務(wù)執(zhí)行時最多保持多久時間會終止。默認(rèn)情況下,只有當(dāng)線程池中的線程數(shù)大于corePoolSize時,keepAliveTime才會起作用,即當(dāng)線程池中的線程數(shù)大于corePoolSize,如果一個線程的空閑時間達(dá)到keepAliveTime,則會終止直到線程池中的線程數(shù)量不大于corePoolSize。但是如果調(diào)用了allowCoreThreadTimeOut(boolean)方法,在線程池中線程數(shù)不大于corePoolSize時,keepAliveTime參數(shù)也會啟作用,直到線程池中的線程數(shù)為0。

unit 參數(shù)keepAliveTime的時間單位,有7種取值,在TimeUnit類中有7種靜態(tài)屬性。

TimeUnit.DAYS : 以 天 為單位 ; TimeUnit.HOURS : 以 小時 為單位 ; TimeUnit.MINUTES : 以 分鐘 為單位 ; TimeUnit.SECONDS : 以 秒 為單位 ; TimeUnit.MILLISECONDS : 以 毫秒 為單位 ; TimeUnit.MICROSECONDS : 以 微秒 為單位 ; TimeUnit.NANOSECONDS : 以 納秒 為單位 ;

workQueue一個阻塞隊列,用來存儲等待執(zhí)行的任務(wù),這個參數(shù)的選擇也很重要,會對線程池的運行過程產(chǎn)生重大影響,一般有以下幾種選擇。

ArrayBlockingQueue:基于數(shù)組的先進(jìn)先出隊列,創(chuàng)建時必須指定大小。 LinkedBlockingQueue:基于鏈表的先進(jìn)先出隊列,若果創(chuàng)建時沒有指定此隊列的大小,則默認(rèn)為Integer.MAX_VALUE。 SynchronousQueue:這個隊列比較特殊,它不會保存提交的任務(wù),而是直接新建一個線程來執(zhí)行新的任務(wù)。

threadFactory線程工廠,主要用來創(chuàng)建線程。線程池最重要的一項工作,就是在滿足某些條件情況下創(chuàng)建線程。在ThreadPoolExecutor線程池中,創(chuàng)建線程的操作時交給ThreadFactoty來完成。使用線程池,就必須要指定threadFactory。如果我們的構(gòu)造器中沒有指定使用ThreadFactory,這個時候ThreadPoolExecutor就會使用默認(rèn)的ThreadFactory:DefaultThreadFactoryhandler 在ThreadPoolExecutor線程池中還有一個重要的接口:RejectedExecutionHandler。當(dāng)提交給線程池的某一個新任務(wù)無法直接被線程池中“核心線程”直接處理,又無法加入等待隊列,也無法創(chuàng)建新的線程執(zhí)行;又或者線程池已經(jīng)調(diào)用shutdown()方法停止了工作;又或者線程池不是處于正常的工作狀態(tài);這時候ThreadPoolExecutor線程池會拒絕處理這個任務(wù),觸發(fā)創(chuàng)建ThreadPoolExecutor線程池時定義的RejectedExecutionHandler接口的實現(xiàn),表示當(dāng)拒絕處理任務(wù)時的策略,有以下四種取值,四種值都為其靜態(tài)內(nèi)部類:

ThreadPoolExecutor.AbortPolicy:丟棄任務(wù)并拋出RejectedExecutionException異常 ThreadPoolExecutor.DiscardPolicy:也是丟棄任務(wù),但是不拋出異常。 ThreadPoolExecutor.DiscardOldestPolicy:丟棄隊列最前面的任務(wù),然后重新嘗試執(zhí)行新提交的任務(wù)。 ThreadPoolExecutor執(zhí)行execute方法分下面4種情況 如果當(dāng)前運行的線程少于corePoolSize,則創(chuàng)建新的線程來執(zhí)行任務(wù)(執(zhí)行這一步驟需要獲取全局鎖) 如果運行的線程等于或者多于corePoolSize,則將任務(wù)加入到BlockingQueue 如果無法將任務(wù)加入BlockingQueue(隊列已滿),則創(chuàng)建新的線程來處理任務(wù)(執(zhí)行這一步驟需要獲取全局鎖) 如果創(chuàng)建新線程將當(dāng)前運行的線程超出maxnumPoolSize,任務(wù)被拒絕,并調(diào)用RejectedExecutionHandler.rejectedExecution()方法。

以上就是Java并發(fā)線程之線程池的知識總結(jié)的詳細(xì)內(nèi)容,更多關(guān)于Java 線程池的資料請關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標(biāo)簽: Java
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
国产乱码精品一区二区亚洲| 成人国产精选| 91久久久久| 在线午夜精品| 亚洲一区二区三区无吗| 一区二区91| 欧美在线日韩| 麻豆国产精品| 激情国产在线| 久久精品国产亚洲夜色av网站| 2023国产精品久久久精品双| 亚洲作爱视频| 欧美一区在线观看视频| 久久不见久久见免费视频7 | 欧美成人日韩| 男女男精品网站| 国产伦精品一区二区三区在线播放| 成人午夜在线| 午夜日韩av| 国产日韩欧美中文在线| 国产精品精品| 亚洲深夜av| 国产精品伦一区二区| 亚洲成a人片| 亚洲美女91| 国产精品麻豆久久| 免费精品视频| 精品三级在线| 国产一区91| 国产欧美高清| 国产一区日韩一区| 国产欧美精品| 五月天激情综合网| 国产欧美自拍一区| 激情综合网站| 欧美韩一区二区| 亚洲一区欧美激情| 成人亚洲精品| 亚洲精品免费观看| 精品捆绑调教一区二区三区| 日本三级亚洲精品| 国产一区欧美| 精品久久久久久久| 久久午夜影视| 国产精品麻豆久久| 日韩欧美另类中文字幕| 亚洲美女久久精品| 88久久精品| 国产精品婷婷| 色一区二区三区| 久久国产生活片100| 亚洲欧美日韩高清在线| 精品三级久久久| 日韩欧美三区| 亚洲欧美不卡| 激情欧美国产欧美| 久久男人av| 亚州精品视频| 亚洲女同一区| 国产传媒av在线| 国产欧美在线| 日韩精品中文字幕吗一区二区 | 国产日韩一区二区三区在线| 午夜国产精品视频免费体验区| 国产福利91精品一区二区| 欧美天堂一区| 亚洲精品视频一二三区| 欧美成人综合| 久久影视一区| 日韩三区免费| 日韩免费视频| 国产精品久久久久久久久久10秀| 国产精品激情电影| 在线精品亚洲| 日av在线不卡| 男人的天堂亚洲一区| 国产农村妇女精品一二区| 欧美精品一区二区久久| 韩国三级一区| 91精品xxx在线观看| 国产成人77亚洲精品www| 国产精品一在线观看| 亚洲乱亚洲高清| 综合视频一区| 亚洲精品高潮| 天堂va在线高清一区| 免费高清在线一区| 一区二区自拍| 激情久久久久久久| 在线视频观看日韩| 亚洲先锋成人| 成人av二区| 欧美美女一区| 日韩午夜黄色| 欧美综合二区| 中文无码久久精品| 亚洲精品在线二区| 日韩不卡一区二区| 日本午夜精品一区二区三区电影| 青青草91久久久久久久久| 91亚洲精品视频在线观看| 69堂精品视频在线播放| 国产精品宾馆| 久久久久观看| 日韩a一区二区| 日韩在线综合| 欧美精品自拍| 日韩有吗在线观看| 国产乱码精品一区二区三区亚洲人| 国产精品手机在线播放| 久久午夜影院| 神马午夜在线视频| 亚洲欧美伊人| 亚洲九九精品| 欧美成人一二区| 快播电影网址老女人久久| 婷婷精品进入| 亚洲精品九九| 国产日产一区| 欧美好骚综合网| 午夜久久免费观看| 亚洲专区视频| 激情不卡一区二区三区视频在线| 欧美sm一区| 蜜桃一区二区三区在线观看| 日本午夜精品久久久| 国产精品久久久久蜜臀| 亚洲福利国产| 亚洲日本国产| 动漫av一区| 欧美精品激情| 国产日韩一区| 国产一在线精品一区在线观看| 亚洲一区久久| 国产精品男女| 国产一区久久| 欧美日韩国产一区二区在线观看| sm久久捆绑调教精品一区| 99热免费精品| 麻豆视频一区二区| 在线成人直播| 国产精品国产三级在线观看| 激情欧美日韩一区| 国产乱码精品| 亚洲精华国产欧美| 麻豆久久一区二区| 99re国产精品| 精品美女视频| 亚洲欧美日韩国产一区二区| 欧美精品成人| 午夜一级在线看亚洲| 国产福利资源一区| 日韩在线播放一区二区| 高清久久一区| 亚洲精品三级| 久久狠狠婷婷| 国产精品毛片aⅴ一区二区三区| 黑丝一区二区| 首页国产精品| 欧美日韩一区二区高清| 欧美国产91| 粉嫩av一区二区三区四区五区 | 911亚洲精品| 婷婷综合五月| 国内精品麻豆美女在线播放视频| 免费人成网站在线观看欧美高清| 国产精品99一区二区三区| 日韩不卡一区二区| 亚洲激情二区| 欧美日韩在线观看首页| 日本中文字幕不卡| 不卡在线一区| 日韩精品永久网址| 国产精品扒开腿做爽爽爽软件| 精品1区2区3区4区| 国产麻豆久久| 激情不卡一区二区三区视频在线| 亚欧洲精品视频在线观看| 欧美成人高清| 欧美日韩视频免费观看| 你懂的国产精品永久在线| 日本亚洲不卡| 美女黄网久久| 亚洲国产专区校园欧美| 久久一区亚洲| 91精品国产自产在线丝袜啪| 亚洲在线观看| 亚洲福利国产| 色婷婷精品视频| 91综合视频| 精品中文在线| 麻豆久久久久久| 国产精品一区二区三区av| 日韩国产成人精品| 亚洲精品观看| 免费观看在线综合色| 男人天堂欧美日韩| 亚洲一区国产| 久久国产高清| 视频在线观看一区|