最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java多線程中的ThreadPoolExecutor使用解析

 更新時(shí)間:2023年12月07日 08:39:37   作者:小柴林  
這篇文章主要介紹了Java多線程中的ThreadPoolExecutor使用解析,作為線程池的緩沖,當(dāng)新增線程超過(guò)maximumPoolSize時(shí),會(huì)將新增線程暫時(shí)存放到該隊(duì)列中,需要的朋友可以參考下

ThreadPoolExecutor繼承關(guān)系結(jié)構(gòu)

ThreadPoolExecutor初始化構(gòu)造方法

public ThreadPoolExecutor(int corePoolSize,    #核心線程池大小,包括空閑線程。
                        int maximumPoolSize,   #線程池最大線程數(shù)
                          long keepAliveTime,  #超過(guò)corePoolSize的空閑線程保持存活的時(shí)長(zhǎng)
                          TimeUnit unit,       #keepAliveTime時(shí)長(zhǎng)單位
                          BlockingQueue<Runnable> workQueue    #存放待處理線程的Queue
                          ThreadFactory threadFactory,         #線程工廠對(duì)象,定制化線程池的線程屬性(name,uncaughtException(),daemon,priority)
                          RejectedExecutionHandler handler)    #異常拒絕處理器,處理任務(wù)被拒絕執(zhí)行時(shí)的行為;默認(rèn)new AbortPolicy()

 ThreadPoolExecutor方法

int getCorePoolSize()        #返回核心線程數(shù)量
int getMaximumPoolSize()     #返回最大的線程數(shù)量
int getPoolSize()            #返回當(dāng)前線程池中的線程數(shù)量,包括在運(yùn)行或休眠,new ThreadPoolExecutor()不會(huì)立馬創(chuàng)建可用線程
int getQueue().size()        #返回等待執(zhí)行線程的隊(duì)列數(shù)量
void shutdown()              #不再添加新task,使當(dāng)前未執(zhí)行完的線程繼續(xù)執(zhí)行,不會(huì)阻塞主線程main,調(diào)用shutdown()后,主線程馬上結(jié)束,而線程池繼續(xù)執(zhí)行直到任務(wù)執(zhí)行完畢;shutdown()使線程池狀態(tài)立即變成SHUTDOWN狀態(tài)
List<Runnable> shutdownNow() #中斷所有Task并且拋出InterruptesException異常,前提是線程中使用Thread.currentThread().isInterrupted()判斷當(dāng)前線程是否被中斷;shutdownNow()使線程池狀態(tài)立即變成STOP狀態(tài),并試圖停止所有正在執(zhí)行的線程,線程池繼續(xù)執(zhí)行直到當(dāng)前任務(wù)執(zhí)行完畢
boolean isShutdown()         #當(dāng)前線程池是否已被關(guān)閉
boolean isTerminating()      #判斷當(dāng)前線程池在shutdown()或shutdownNow()后處于正在中止但是尚未完全中止時(shí),返回ture。
boolean isTerminated()       #判斷當(dāng)前線程池在shutdown()或shutdownNow()后已完全中止時(shí),返回ture。
boolean awaitTermination(long timeout, TimeUnit unit)  #在指定時(shí)間內(nèi)查看線程池是否已終止工作;在線程池執(zhí)行shutdown()后,如果池中還有任務(wù)在被執(zhí)行則阻塞,否則將不再阻塞;與shutdown()結(jié)合可實(shí)現(xiàn)"等待執(zhí)行完畢"的效果。
boolean allowsCoreThreadTimeOut()                 #配置核心線程是否有超時(shí)效果
boolean allowsCoreThreadTimeOut(boolean value)    #配置核心線程是否有超時(shí)效果
boolean prestartCoreThread()    #每次初始化一個(gè)核心線程,直到達(dá)到corePoolSize時(shí)返回false
int prestartAllCoreThreads()    #初始化全部corePoolSize數(shù)量的核心線程,返回初始化的個(gè)數(shù)
long getCompletedTaskCount()    #返回已執(zhí)行完成的線程大概累積數(shù)量
void beforeExecute(Thread t, Runnable r)     #線程執(zhí)行前的操作
void afterExecute(Runnable r, Throwable t)   #線程執(zhí)行結(jié)束后的操作
boolean remove(Runnable task)   #刪除被execute()調(diào)用的尚未被執(zhí)行的Runnable任務(wù),對(duì)submit()調(diào)用的線程需使用purge()
int getActiveCount()            #獲取正在執(zhí)行任務(wù)的線程數(shù)
long getTaskCount()             #獲取可被執(zhí)行的任務(wù)數(shù)

常見(jiàn)3種隊(duì)列

作用:作為線程池的緩沖,當(dāng)新增線程超過(guò)maximumPoolSize時(shí),會(huì)將新增線程暫時(shí)存放到該隊(duì)列中;

LinkedBlockingDeque:無(wú)邊界雙端隊(duì)列;

1>默認(rèn)構(gòu)造器由于該隊(duì)列大小沒(méi)有限制,執(zhí)行execute不會(huì)拋出異常,但是線程池同時(shí)運(yùn)行線程數(shù)不會(huì)超過(guò)corePoolSize;此時(shí)maximumPoolSize和keepAliveTime無(wú)效,因?yàn)槎嘤诘木€程會(huì)被放入LinkedBlockingQueue隊(duì)列中等待;

2>指定邊界大小時(shí),maximumPoolSize+邊界大小<待執(zhí)行的任務(wù)時(shí),多于的任務(wù)將執(zhí)行拒絕策略;

ArrayBlockingQueue:有邊界隊(duì)列;maximumPoolSize+邊界大小<待執(zhí)行的任務(wù)時(shí),多余的任務(wù)將執(zhí)行拒絕策略;

SynchronousQueue:有序隊(duì)列;當(dāng)執(zhí)行的線程大于maximumPoolSize時(shí),多余線程將執(zhí)行拒絕策略。

4種拒絕策略

AbortPolicy:當(dāng)任務(wù)添加到線程池被拒絕時(shí),拋出RejectedExceutionExcetion異常,默認(rèn)策略;

CallerRunsPolicy:當(dāng)任務(wù)添加到線程池被拒絕時(shí),會(huì)調(diào)用創(chuàng)建線程池的父線程來(lái)處理被拒絕任務(wù);

DiscardOldestPolicy:當(dāng)任務(wù)添加到線程池被拒絕時(shí),線程池會(huì)丟棄等待隊(duì)列中最舊未處理任務(wù),然后將被拒絕任務(wù)添加到等待隊(duì)列中;

DiscardPolicy:當(dāng)任務(wù)添加到線程池被拒絕時(shí),線程池會(huì)丟棄被拒絕任務(wù);

到此這篇關(guān)于Java多線程中的ThreadPoolExecutor使用解析的文章就介紹到這了,更多相關(guān)Java的ThreadPoolExecutor內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論

弥渡县| 常熟市| 盐池县| 祁阳县| 政和县| 东至县| 图木舒克市| 上蔡县| 萨迦县| 于田县| 海伦市| 镇赉县| 嵊州市| 建昌县| 北辰区| 伊宁市| 金湖县| 连云港市| 石家庄市| 淮安市| 霍州市| 鄂托克前旗| 桑植县| 兴城市| 汉阴县| 青铜峡市| 广饶县| 大石桥市| 昌吉市| 香格里拉县| 上蔡县| 聂拉木县| 湖口县| 呼图壁县| 油尖旺区| 兴宁市| 曲周县| 信宜市| 沈丘县| 德庆县| 渝中区|