欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java線程池7個參數(shù)的詳細(xì)含義

 更新時間:2022年03月10日 10:27:13   作者:ye17186  
java多線程開發(fā)時,常常用到線程池技術(shù),這篇文章是對創(chuàng)建java線程池時的七個參數(shù)的詳細(xì)解釋,具有一定的參考價值,感興趣的小伙伴們可以參考一下

java多線程開發(fā)時,常常用到線程池技術(shù),這篇文章是對創(chuàng)建java線程池時的七個參數(shù)的詳細(xì)解釋。

從源碼中可以看出,線程池的構(gòu)造函數(shù)有7個參數(shù)

這 7 個參數(shù)分別是:

  • corePoolSize:核心線程數(shù)。
  • maximumPoolSize:最大線程數(shù)。
  • keepAliveTime:空閑線程存活時間。
  • TimeUnit:時間單位。
  • BlockingQueue:線程池任務(wù)隊(duì)列。
  • ThreadFactory:創(chuàng)建線程的工廠。
  • RejectedExecutionHandler:拒絕策略。

下面會對這7個參數(shù)一一解釋。

一、corePoolSize 線程池核心線程大小

線程池中會維護(hù)一個最小的線程數(shù)量,即使這些線程處理空閑狀態(tài),他們也不會被銷毀,除非設(shè)置了allowCoreThreadTimeOut。這里的最小線程數(shù)量即是corePoolSize。

二、maximumPoolSize 線程池最大線程數(shù)量

一個任務(wù)被提交到線程池以后,首先會找有沒有空閑存活線程,如果有則直接將任務(wù)交給這個空閑線程來執(zhí)行,如果沒有則會緩存到工作隊(duì)列(后面會介紹)中,如果工作隊(duì)列滿了,才會創(chuàng)建一個新線程,然后從工作隊(duì)列的頭部取出一個任務(wù)交由新線程來處理,而將剛提交的任務(wù)放入工作隊(duì)列尾部。線程池不會無限制的去創(chuàng)建新線程,它會有一個最大線程數(shù)量的限制,這個數(shù)量即由maximunPoolSize指定。

三、keepAliveTime 空閑線程存活時間

一個線程如果處于空閑狀態(tài),并且當(dāng)前的線程數(shù)量大于corePoolSize,那么在指定時間后,這個空閑線程會被銷毀,這里的指定時間由keepAliveTime來設(shè)定

四、unit 空閑線程存活時間單位

keepAliveTime的計(jì)量單位

五、workQueue 工作隊(duì)列

新任務(wù)被提交后,會先進(jìn)入到此工作隊(duì)列中,任務(wù)調(diào)度時再從隊(duì)列中取出任務(wù)。jdk中提供了四種工作隊(duì)列:

①ArrayBlockingQueue

基于數(shù)組的有界阻塞隊(duì)列,按FIFO排序。新任務(wù)進(jìn)來后,會放到該隊(duì)列的隊(duì)尾,有界的數(shù)組可以防止資源耗盡問題。當(dāng)線程池中線程數(shù)量達(dá)到corePoolSize后,再有新任務(wù)進(jìn)來,則會將任務(wù)放入該隊(duì)列的隊(duì)尾,等待被調(diào)度。如果隊(duì)列已經(jīng)是滿的,則創(chuàng)建一個新線程,如果線程數(shù)量已經(jīng)達(dá)到maxPoolSize,則會執(zhí)行拒絕策略。

②LinkedBlockingQuene

基于鏈表的無界阻塞隊(duì)列(其實(shí)最大容量為Interger.MAX),按照FIFO排序。由于該隊(duì)列的近似無界性,當(dāng)線程池中線程數(shù)量達(dá)到corePoolSize后,再有新任務(wù)進(jìn)來,會一直存入該隊(duì)列,而不會去創(chuàng)建新線程直到maxPoolSize,因此使用該工作隊(duì)列時,參數(shù)maxPoolSize其實(shí)是不起作用的。

③SynchronousQuene

一個不緩存任務(wù)的阻塞隊(duì)列,生產(chǎn)者放入一個任務(wù)必須等到消費(fèi)者取出這個任務(wù)。也就是說新任務(wù)進(jìn)來時,不會緩存,而是直接被調(diào)度執(zhí)行該任務(wù),如果沒有可用線程,則創(chuàng)建新線程,如果線程數(shù)量達(dá)到maxPoolSize,則執(zhí)行拒絕策略。

④PriorityBlockingQueue

具有優(yōu)先級的無界阻塞隊(duì)列,優(yōu)先級通過參數(shù)Comparator實(shí)現(xiàn)。

六、threadFactory 線程工廠

創(chuàng)建一個新線程時使用的工廠,可以用來設(shè)定線程名、是否為daemon線程等等

七、handler 拒絕策略

當(dāng)工作隊(duì)列中的任務(wù)已到達(dá)最大限制,并且線程池中的線程數(shù)量也達(dá)到最大限制,這時如果有新任務(wù)提交進(jìn)來,該如何處理呢。這里的拒絕策略,就是解決這個問題的,jdk中提供了4中拒絕策略:

①CallerRunsPolicy

該策略下,在調(diào)用者線程中直接執(zhí)行被拒絕任務(wù)的run方法,除非線程池已經(jīng)shutdown,則直接拋棄任務(wù)。

②AbortPolicy

該策略下,直接丟棄任務(wù),并拋出RejectedExecutionException異常。

③DiscardPolicy

該策略下,直接丟棄任務(wù),什么都不做。

④DiscardOldestPolicy

該策略下,拋棄進(jìn)入隊(duì)列最早的那個任務(wù),然后嘗試把這次拒絕的任務(wù)放入隊(duì)列

到此這篇關(guān)于Java線程池7個參數(shù)的詳細(xì)含義的文章就介紹到這了,更多相關(guān)Java線程池參數(shù)含義內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Spring Boot Mail QQ企業(yè)郵箱無法連接解決方案

    Spring Boot Mail QQ企業(yè)郵箱無法連接解決方案

    這篇文章主要介紹了Spring Boot Mail QQ企業(yè)郵箱無法連接解決方案,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-09-09
  • 詳解java如何正確使用volatile

    詳解java如何正確使用volatile

    這篇文章給大家分享了java如何正確使用volatile的相關(guān)知識點(diǎn)內(nèi)容,有興趣的朋友可以參考學(xué)習(xí)下。
    2018-07-07
  • Java中過濾器、監(jiān)聽器和攔截器的區(qū)別詳解

    Java中過濾器、監(jiān)聽器和攔截器的區(qū)別詳解

    這篇文章主要介紹了Java中過濾器、監(jiān)聽器和攔截器的區(qū)別詳解,有些朋友可能不了解過濾器、監(jiān)聽器和攔截器的區(qū)別,本文就來詳細(xì)講一下,相信看完你會有所收獲,需要的朋友可以參考下
    2024-01-01
  • 在Java中使用基本的正則表達(dá)式

    在Java中使用基本的正則表達(dá)式

    這篇文章主要介紹了在Java中使用基本的正則表達(dá)式,本文通過簡要的案例,說明了很多場景下的正則表達(dá)式的用法,列出了正則表達(dá)式匹配規(guī)則的表格,需要的朋友可以參考下
    2021-07-07
  • SpringBoot本地磁盤映射問題

    SpringBoot本地磁盤映射問題

    這篇文章主要介紹了SpringBoot本地磁盤映射問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-10-10
  • javaWeb使用Kaptcha組件生成驗(yàn)證碼

    javaWeb使用Kaptcha組件生成驗(yàn)證碼

    這篇文章主要為大家詳細(xì)介紹了javaWeb使用Kaptcha組件生成驗(yàn)證碼的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-10-10
  • java正則表達(dá)式如何獲取xml文件中指定節(jié)點(diǎn)的值

    java正則表達(dá)式如何獲取xml文件中指定節(jié)點(diǎn)的值

    這篇文章主要介紹了java正則表達(dá)式如何獲取xml文件中指定節(jié)點(diǎn)的值問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • 使用Java生成JWT令牌的示例代碼

    使用Java生成JWT令牌的示例代碼

    json-web-token簡稱java web令牌,也稱作JWT,是一種可以實(shí)現(xiàn)跨域身份驗(yàn)證身份的方案,jwt不加密傳輸數(shù)據(jù),但能夠通過數(shù)據(jù)前面驗(yàn)證數(shù)據(jù)的未被篡改,本文給大家介紹了如何使用Java生成JWT令牌,需要的朋友可以參考下
    2024-04-04
  • 詳解Java設(shè)計(jì)模式編程中的中介者模式

    詳解Java設(shè)計(jì)模式編程中的中介者模式

    這篇文章主要介紹了Java設(shè)計(jì)模式編程中的中介者模式,文中舉了典型的同事類與中介者類的例子來解釋說明,需要的朋友可以參考下
    2016-02-02
  • 必須了解的高階JAVA枚舉特性!

    必須了解的高階JAVA枚舉特性!

    這篇文章主要介紹了必須了解的高階JAVA枚舉特性!幫助大家更好的理解和學(xué)習(xí)Java枚舉的相關(guān)知識,感興趣的朋友可以了解下
    2021-01-01

最新評論