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

Java多線程中的ThreadPoolExecutor使用解析

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

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

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

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

 ThreadPoolExecutor方法

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

常見3種隊列

作用:作為線程池的緩沖,當新增線程超過maximumPoolSize時,會將新增線程暫時存放到該隊列中;

LinkedBlockingDeque:無邊界雙端隊列;

1>默認構(gòu)造器由于該隊列大小沒有限制,執(zhí)行execute不會拋出異常,但是線程池同時運行線程數(shù)不會超過corePoolSize;此時maximumPoolSize和keepAliveTime無效,因為多于的線程會被放入LinkedBlockingQueue隊列中等待;

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

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

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

4種拒絕策略

AbortPolicy:當任務(wù)添加到線程池被拒絕時,拋出RejectedExceutionExcetion異常,默認策略;

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

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

DiscardPolicy:當任務(wù)添加到線程池被拒絕時,線程池會丟棄被拒絕任務(wù);

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

相關(guān)文章

  • java中http請求之restTemplate配置超時時間問題解決

    java中http請求之restTemplate配置超時時間問題解決

    這篇文章主要介紹了java中http請求之restTemplate配置超時時間,本文給大家分享三種解決方法,結(jié)合實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-05-05
  • Java設(shè)計模式之命令模式_動力節(jié)點Java學院整理

    Java設(shè)計模式之命令模式_動力節(jié)點Java學院整理

    命令模式就是對命令的封裝,下文中給大家介紹了命令模式類圖中的基本結(jié)構(gòu),對java設(shè)計模式之命令模式相關(guān)知識感興趣的朋友一起看看吧
    2017-08-08
  • Java中scheduleAtFixedRate的用法

    Java中scheduleAtFixedRate的用法

    如何正確使用Java中的scheduleAtFixedRate是一篇介紹Java中定時任務(wù)調(diào)度器的文章。它詳細介紹了scheduleAtFixedRate方法的用法、參數(shù)及作用,并給出了一些實例以幫助讀者更好地理解其使用。本文為Java開發(fā)人員提供了一些實用的技巧,幫助他們更好地管理和控制定時任務(wù)
    2023-04-04
  • SpringBoot整合MybatisPlus的教程詳解

    SpringBoot整合MybatisPlus的教程詳解

    這篇文章主要介紹了SpringBoot整合MybatisPlus的方法,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-11-11
  • JavaWeb搭建網(wǎng)上圖書商城畢業(yè)設(shè)計

    JavaWeb搭建網(wǎng)上圖書商城畢業(yè)設(shè)計

    這篇文章主要介紹了JavaWeb搭建網(wǎng)上圖書商城框架,特別適合正在為網(wǎng)上商城畢業(yè)設(shè)計煩惱的同學,需要的朋友可以參考下
    2015-11-11
  • 如何基于LoadingCache實現(xiàn)Java本地緩存

    如何基于LoadingCache實現(xiàn)Java本地緩存

    這篇文章主要介紹了如何基于LoadingCache實現(xiàn)Java本地緩存,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-12-12
  • spring集成mybatis實現(xiàn)mysql數(shù)據(jù)庫讀寫分離

    spring集成mybatis實現(xiàn)mysql數(shù)據(jù)庫讀寫分離

    本文通過實例代碼給大家介紹了spring集成mybatis實現(xiàn)mysql數(shù)據(jù)庫讀寫分離,需要的朋友可以參考下
    2017-08-08
  • SpringBoot保護配置文件中敏感信息的保姆級教程

    SpringBoot保護配置文件中敏感信息的保姆級教程

    這篇文章主要為大家詳細介紹了SpringBoot保護配置文件中敏感信息的保姆級教程,文中的示例代碼講解詳細,感興趣的小伙伴可以了解下
    2025-12-12
  • Java?Web開發(fā)常用框架Spring?MVC?Struts示例解析

    Java?Web開發(fā)常用框架Spring?MVC?Struts示例解析

    這篇文章主要為大家介紹了Java?Web開發(fā)常用框架Spring?MVC?Struts示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-06-06
  • SpringCloud兩種注冊中心的實現(xiàn)

    SpringCloud兩種注冊中心的實現(xiàn)

    本文主要介紹了SpringCloud兩種注冊中心的實現(xiàn),包括服務(wù)注冊、服務(wù)拉取、負載均衡和實例權(quán)重配置等,具有一定的參考價值,感興趣的可以了解一下
    2025-01-01

最新評論

黎城县| 集贤县| 喜德县| 武强县| 汾西县| 鄄城县| 长阳| 鲁山县| 临泽县| 井陉县| 阜平县| 墨脱县| 乐都县| 江安县| 永德县| 万安县| 梁河县| 九龙县| 大足县| 满城县| 平安县| 吉安市| 合作市| 安吉县| 丹东市| 英吉沙县| 顺昌县| 云阳县| 扎兰屯市| 柏乡县| 全南县| 白朗县| 沂南县| 昌图县| 宜昌市| 健康| 曲周县| 上高县| 永顺县| 中西区| 额尔古纳市|