亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Java多線程中的ThreadPoolExecutor使用解析

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

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

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

public ThreadPoolExecutor(int corePoolSize,    #核心線程池大小,包括空閑線程。
                        int maximumPoolSize,   #線程池最大線程數(shù)
                          long keepAliveTime,  #超過corePoolSize的空閑線程保持存活的時(shí)長
                          TimeUnit unit,       #keepAliveTime時(shí)長單位
                          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ù)

常見3種隊(duì)列

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

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

1>默認(rèn)構(gòu)造器由于該隊(duì)列大小沒有限制,執(zhí)行execute不會(huì)拋出異常,但是線程池同時(shí)運(yùn)行線程數(shù)不會(huì)超過corePoolSize;此時(shí)maximumPoolSize和keepAliveTime無效,因?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)建線程池的父線程來處理被拒絕任務(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)文章

  • 通過實(shí)例學(xué)習(xí)Either 樹和模式匹配

    通過實(shí)例學(xué)習(xí)Either 樹和模式匹配

    這篇文章主要介紹了通過實(shí)例學(xué)習(xí)Either 樹和模式匹配,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,,需要的朋友可以參考下
    2019-06-06
  • 解決@PathVariable參數(shù)接收不完整的問題

    解決@PathVariable參數(shù)接收不完整的問題

    這篇文章主要介紹了解決@PathVariable參數(shù)接收不完整的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • java 同步、異步、阻塞和非阻塞分析

    java 同步、異步、阻塞和非阻塞分析

    這篇文章主要介紹了java 同步、異步、阻塞和非阻塞分析的相關(guān)資料,需要的朋友可以參考下
    2017-02-02
  • java獲取properties屬性文件示例

    java獲取properties屬性文件示例

    Properties類表示了一個(gè)持久的屬性集。Properties可保存在流中或從流中加載。屬性列表中每個(gè)鍵及其對(duì)應(yīng)值都是一個(gè)字符串。本文使用java讀取這些屬性,看下面詳細(xì)介紹吧
    2014-01-01
  • JAVA 運(yùn)算符歸納總結(jié)

    JAVA 運(yùn)算符歸納總結(jié)

    這篇文章主要對(duì)Java語法基礎(chǔ)之運(yùn)算符進(jìn)行了詳細(xì)的歸納總結(jié),需要的朋友可以參考
    2017-04-04
  • SpringBoot中解決跨域的多種實(shí)現(xiàn)方式

    SpringBoot中解決跨域的多種實(shí)現(xiàn)方式

    這篇文章主要介紹了SpringBoot中解決跨域的多種實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-05-05
  • java 中String.equals和==的比較

    java 中String.equals和==的比較

    這篇文章主要介紹了java 中String.equals和==的比較的相關(guān)資料,需要的朋友可以參考下
    2017-08-08
  • spring使用WebSocket注入service層失敗問題及解決

    spring使用WebSocket注入service層失敗問題及解決

    這篇文章主要介紹了spring使用WebSocket注入service層失敗問題及解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • 使用Maven中的scope總結(jié)

    使用Maven中的scope總結(jié)

    這篇文章主要介紹了使用Maven中的scope總結(jié),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • Java中Stream流中map和forEach的區(qū)別詳解

    Java中Stream流中map和forEach的區(qū)別詳解

    本文主要介紹了Java中Stream流中map和forEach的區(qū)別詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-04-04

最新評(píng)論