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

詳解Java線程池的增長過程

 更新時間:2019年08月06日 16:14:36   作者:為何不是夢  
在本篇文章里小編給大家整理的是關(guān)于Java線程池的增長過程以及相關(guān)知識點(diǎn),需要的朋友們可以參考下。

通過ThreadPoolExecutor的方式創(chuàng)建線程池

ThreadPoolExecutor 構(gòu)造方法:

public ThreadPoolExecutor(int corePoolSize,
               int maximumPoolSize,
               long keepAliveTime,
               TimeUnit unit,
               BlockingQueue<Runnable> workQueue,
               ThreadFactory threadFactory,
               RejectedExecutionHandler handler) {
    //code...   
}

參數(shù)的意義:

  • 1.corePoolSize 指定了線程池里的線程數(shù)量,核心線程池大小
  • 2.maximumPoolSize 指定了線程池里的最大線程數(shù)量
  • 3.keepAliveTime 當(dāng)線程池線程數(shù)量大于corePoolSize時候,多出來的空閑線程,多長時間會被銷毀。
  • 4.unit 時間單位
  • 5.workQueue 任務(wù)隊列,用于存放提交但是尚未被執(zhí)行的任務(wù)。
  • 6.threadFactory 線程工廠,用于創(chuàng)建線程,一般可以用默認(rèn)的
  • 7.handler 拒絕策略,當(dāng)任務(wù)過多時候,如何拒絕任務(wù)。當(dāng)提交任務(wù)數(shù)超過maximumPoolSize + workQueue 的size之和,任務(wù)交給RejectedExecutionHandler 處理

線程池的增長

線程池的增長與創(chuàng)建自定義線程池時設(shè)置的參數(shù)密切相關(guān),重點(diǎn)講解比較容易讓人誤解的 corePoolsize, maximumPoolsize, workQueue之 間關(guān)系。

先看一張圖,理解一下增長過程

當(dāng)線程池小于corePoolsize時,新提交的任務(wù)將創(chuàng)建一個新的線程執(zhí)行任務(wù),即使此時線程池中存在空閑線程。當(dāng)線程池達(dá)到corePoolSize時,新提交的任務(wù)將被放入workQueue中,等待線程池中任務(wù)調(diào)度執(zhí)行當(dāng)workQueue已滿,且線程池<maximumPoolSize 時, 新提交任務(wù)會創(chuàng)建新線程執(zhí)行任務(wù)當(dāng)提交任務(wù)數(shù)超過 maximumPoolSize 時,新提交任務(wù)由RejectedExecutionHandlier處理另外需要特別注意的是,當(dāng)線程池中超過corePoolSize線程,空閑時間達(dá)到keepAliveTime時,將會關(guān)閉空閑線程。當(dāng)設(shè)置allowCoreThreadTimeOut(true)時,線程池中corePoolSize線程空閑時間達(dá)到keepAliveTime也將關(guān)閉
當(dāng)一個任務(wù)通過execute( Runnable)方法欲添加到線程池時:
如果此時線程池中的數(shù)量小于corePoolSize,即使線程池中的線程都處于空閑狀態(tài),也要創(chuàng)建新的線程來處理被添加的任務(wù)。如果此時線程池中的數(shù)量等于corePoolSize,但是緩沖隊列workQueue未滿,那么任務(wù)被放入緩沖隊列。如果此時線程池中的數(shù)量大于corePoolSize,緩沖隊列workQueue滿,并且線程池中的數(shù)量小于maximumPoolSize,建新的線程來處理被添加的任務(wù)。 如果此時線程池中的數(shù)量大于corePoolSize,緩沖隊列workQueue滿,并且線程池中的數(shù)量等于maximumPoolSize,那么通過handler所指定的策略來處理此任務(wù)。也就是:處理任務(wù)的優(yōu)先級為:核心線程corePoolSize、 任務(wù)隊列workQueue、 最大線程maximumPoolSize, 如果三者都滿了,使用RejectedExecutionHandlier處理被拒絕的任務(wù)。(具體怎么處理,屬于拒絕策略的范疇)
當(dāng)線程池中的線程數(shù)量大于corePoolSize時,如果某線程空閑時間超過keepAliveTime,線程將被終止。這樣,線程池可以動態(tài)的調(diào)整池中的線程數(shù)。
以上就是關(guān)于Java線程池的增長過程全部知識點(diǎn),感謝大家對腳本之家的支持。

相關(guān)文章

  • Springboot Thymeleaf實(shí)現(xiàn)HTML屬性設(shè)置

    Springboot Thymeleaf實(shí)現(xiàn)HTML屬性設(shè)置

    這篇文章主要介紹了Springboot Thymeleaf實(shí)現(xiàn)HTML屬性設(shè)置,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2007-11-11
  • 使用監(jiān)聽器對Spring bean id進(jìn)行唯一校驗過程解析

    使用監(jiān)聽器對Spring bean id進(jìn)行唯一校驗過程解析

    這篇文章主要介紹了使用監(jiān)聽器對Spring bean id進(jìn)行唯一校驗過程解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-08-08
  • Java實(shí)現(xiàn)pdf文件合并的使用示例

    Java實(shí)現(xiàn)pdf文件合并的使用示例

    本文主要介紹了Java實(shí)現(xiàn)pdf文件合并的使用示例,主要是將需要合并的pdf文件都拷貝到指定目錄a中,調(diào)用該工具類將該目錄作為第一個參數(shù),第二個參數(shù)傳入輸出文件對象即可,感興趣的可以了解一下
    2023-12-12
  • java 如何讀取properties文件

    java 如何讀取properties文件

    這篇文章主要介紹了java 如何讀取properties文件,幫助大家更好的理解和使用Java,感興趣的朋友可以了解下
    2020-11-11
  • 淺析idea 添加項目依賴的兩種方式

    淺析idea 添加項目依賴的兩種方式

    這篇文章主要介紹了idea 添加項目依賴的兩種方式,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-12-12
  • Java數(shù)據(jù)結(jié)構(gòu)順序表從零基礎(chǔ)到精通進(jìn)階

    Java數(shù)據(jù)結(jié)構(gòu)順序表從零基礎(chǔ)到精通進(jìn)階

    程序中經(jīng)常需要將一組數(shù)據(jù)元素作為整體管理和使用,需要創(chuàng)建這種元素組,用變量記錄它們,傳進(jìn)傳出函數(shù)等。一組數(shù)據(jù)中包含的元素個數(shù)可能發(fā)生變化,順序表則是將元素順序地存放在一塊連續(xù)的存儲區(qū)里,元素間的順序關(guān)系由它們的存儲順序自然表示
    2022-03-03
  • Java實(shí)現(xiàn)讀取TXT和CSV文件內(nèi)容

    Java實(shí)現(xiàn)讀取TXT和CSV文件內(nèi)容

    這篇文章主要為大家詳細(xì)介紹了如何利用Java語言實(shí)現(xiàn)讀取TXT和CSV文件內(nèi)容的功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下
    2023-02-02
  • 平衡二叉樹的左右旋以及雙旋轉(zhuǎn)的圖文詳解

    平衡二叉樹的左右旋以及雙旋轉(zhuǎn)的圖文詳解

    今天小編就為大家分享一篇關(guān)于平衡二叉樹的左右旋以及雙旋轉(zhuǎn)的圖文詳解,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-01-01
  • 通過String.intern()方法淺談堆中常量池

    通過String.intern()方法淺談堆中常量池

    這篇文章主要介紹了通過String.intern()方法淺談堆中常量池,在JDK7之前,字符串常量是存在永久帶Perm 區(qū)的,JDK7開始在將常量池遷移到堆中,這個變化也導(dǎo)致了String的新特性,下面我們慢慢進(jìn)行介紹。,需要的朋友可以參考下
    2019-06-06
  • Spring?Retry重試框架的使用講解

    Spring?Retry重試框架的使用講解

    重試的使用場景比較多,比如調(diào)用遠(yuǎn)程服務(wù)時,由于網(wǎng)絡(luò)或者服務(wù)端響應(yīng)慢導(dǎo)致調(diào)用超時,此時可以多重試幾次。用定時任務(wù)也可以實(shí)現(xiàn)重試的效果,但比較麻煩,用Spring?Retry的話一個注解搞定所有,感興趣的可以了解一下
    2022-10-10

最新評論