91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

詳解Java線程池的增長過程

發布時間:2020-09-30 02:31:46 來源:腳本之家 閱讀:178 作者:為何不是夢 欄目:編程語言

通過ThreadPoolExecutor的方式創建線程池

ThreadPoolExecutor 構造方法:

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

參數的意義:

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

線程池的增長

線程池的增長與創建自定義線程池時設置的參數密切相關,重點講解比較容易讓人誤解的 corePoolsize, maximumPoolsize, workQueue之 間關系。

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

詳解Java線程池的增長過程

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

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

凌云县| 开江县| 德钦县| 斗六市| 尉犁县| 贵南县| 贵州省| 凤山县| 宜兰市| 丰城市| 邮箱| 望奎县| 和田市| 巩义市| 会泽县| 永嘉县| 渝中区| 民县| 贡嘎县| 琼中| 涡阳县| 石狮市| 襄城县| 兴山县| 商河县| 新密市| 千阳县| 拉萨市| 淄博市| 满洲里市| 冀州市| 太保市| 迁安市| 贵阳市| 金寨县| 霍山县| 宕昌县| 崇仁县| 徐水县| 资源县| 镇安县|