日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

程序員必會之最詳細的ThreadPoolExecutor 線程池七大參數含義

來源: 責編: 時間:2023-10-13 14:36:37 310觀看
導讀線程池的 7 大參數整理。public ThreadPoolExecutor(int corePoolSize,int maximumPoolSize,long keepAliveTime,TimeUnit unit,BlockingQueue<Runnable> workQueue,ThreadFactory threadFactory,RejectedExecutionHa

Mrb28資訊網——每日最新資訊28at.com

線程池的 7 大參數整理。Mrb28資訊網——每日最新資訊28at.com

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

corePoolSize 線程池中長期存活的線程數

ThreadPoolExecutor 在創建之初,是不會立即初始化corePoolSize數量的Thread的,而是通過外部request來一個一個的創建,當達到corePoolSize數目之后,就會維持至少corePoolSize數目的Thread在pool中,哪怕他們都處于空閑狀態(idle)。corePoolSize >= 0。Mrb28資訊網——每日最新資訊28at.com

maximumPoolSize 線程池中的最大線程數量

maximumPoolSize >= corePoolSize,maximumPoolSize>0Mrb28資訊網——每日最新資訊28at.com

  • 若當前線程池中線程數 < corePoolSize,則每來一個任務就創建一個線程去執行。
  • 若當前線程池中線程數 >= corePoolSize,會嘗試將任務添加到任務隊列。如果添加成功,則任務會等待空閑線程將其取出并執行(針對的是有界隊列)。
  • 若隊列已滿,且當前線程池中線程數 < maximumPoolSize,創建新的線程。
  • 若當前線程池中線程數 >= maximumPoolSize,則會采用拒絕策略。

keepAliveTime 空閑線程存活時間

當線程池線程數量超過corePoolSize時,多余的空閑線程會在多長時間內被銷毀。Mrb28資訊網——每日最新資訊28at.com

銷毀的線程數=maximumPoolSize(最大線程數)-corePoolSize(核心線程數)。Mrb28資訊網——每日最新資訊28at.com

TimeUnit 時間單位

空閑線程存活時間的描述單位,有以下選項:Mrb28資訊網——每日最新資訊28at.com

  • TimeUnit.DAYS:天
  • TimeUnit.HOURS:小時
  • TimeUnit.MINUTES:分
  • TimeUnit.SECONDS:秒
  • TimeUnit.MILLISECONDS:毫秒
  • TimeUnit.MICROSECONDS:微妙
  • TimeUnit.NANOSECONDS:納秒

BlockingQueue

提交但未執行的任務隊列,有以下選項:Mrb28資訊網——每日最新資訊28at.com

  • LinkedBlockingQueue:用鏈表實現的隊列,可以是有界的,也可以是無界的,但在Executors中默認使用無界的。當有新的任務來到時,若系統的線程數小于corePoolSize,線程池會創建新的線程執行任務, 當系統的線程數量等于corePoolSize后,因為是無界的任務隊列,總是能成功將任務添加到任務隊列中,所以線程數量不再增加。若任務創建的速度遠大于任務處理的速度,無界隊列會快速增長,直到內存耗盡。
  • SynchronousQueue:一個不存儲元素的阻塞隊列,SynchronousQueue沒有容量,所以實際上提交的任務不會被添加到任務隊列,總是將新任務提交給線程執行,如果沒有空閑的線程,則嘗試創建新的線程,如果線程數量已經達到最大值(maximumPoolSize),則執行拒絕策略。
  • ArrayBlockingQueue:一個由數組結構組成的有界阻塞隊列。
  • PriorityBlockingQueue:一個支持優先級排序的無界阻塞隊列。
  • DelayQueue:一個使用優先級隊列實現的無界阻塞隊列,只有在延遲期滿時才能從中提取元素。
  • LinkedTransferQueue:一個由鏈表結構組成的無界阻塞隊列。與SynchronousQueue類似,還含有非阻塞方法。
  • LinkedBlockingDeque:一個由鏈表結構組成的雙向阻塞隊列。

ThreadFactory 創建線程的工廠

線程池創建線程時調用的工廠方法,通過此方法可以設置線程的優先級、線程命名規則以及線程類型(用戶線程還是守護線程)等。一般情況下使用默認的,即Executors類的靜態方法defaultThreadFactory(),也可以自定義。Mrb28資訊網——每日最新資訊28at.com

import java.util.concurrent.LinkedBlockingQueue;import java.util.concurrent.ThreadFactory;import java.util.concurrent.ThreadPoolExecutor;import java.util.concurrent.TimeUnit;public class Test {    public static void main(String[] args) {        // 創建線程工廠        ThreadFactory threadFactory = new ThreadFactory() {            @Override            public Thread newThread(Runnable runnable) {                // 創建線程池中的線程                Thread thread = new Thread(runnable);                // 設置線程名稱                thread.setName("Thread-" + runnable.hashCode());                // 設置線程優先級(最大值:10)                thread.setPriority(Thread.MAX_PRIORITY);                //......                return thread;            }        };        // 創建線程池        ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(                5,                10,                0L,                TimeUnit.MILLISECONDS,                new LinkedBlockingQueue<Runnable>(10),                threadFactory        );        try{            threadPoolExecutor.submit(new Runnable() {                @Override                public void run() {                    Thread thread = Thread.currentThread();                    System.out.println(String.format("線程:%s,線程優先級:%d",thread.getName(), thread.getPriority()));                }            });        }catch (Exception e) {        } finally {            threadPoolExecutor.shutdown();        }    }}

Mrb28資訊網——每日最新資訊28at.com

Executors.defaultThreadFactory()Mrb28資訊網——每日最新資訊28at.com

RejectedExecutionHandler

拒絕策略。當線程池的任務超出線程池隊列可以存儲的最大值之后,執行的策略。Mrb28資訊網——每日最新資訊28at.com

  • AbortPolicy策略:直接拋出異常,阻止系統正常工作。(線程池的默認策略)。
  • DiscardOldestPolicy策略:丟棄任務隊列中最早添加的任務,并嘗試提交當前任務。
  • CallerRunsPolicy策略:調用主線程執行被拒絕的任務,這提供了一種簡單的反饋控制機制,將降低新任務的提交速度。
  • DiscardPolicy策略:忽略并拋棄當前任務。

Mrb28資訊網——每日最新資訊28at.com

new一個線程池Mrb28資訊網——每日最新資訊28at.com

本文鏈接:http://www.www897cc.com/showinfo-26-13280-0.html程序員必會之最詳細的ThreadPoolExecutor 線程池七大參數含義

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: Spring事務超時到底是怎么回事?

下一篇: C# Dev Kit for Visual Studio Code 用法詳解

標簽:
  • 熱門焦點
  • 一加Ace2 Pro真機揭曉 鈦空灰配色質感拉滿

    終于,在經過了幾波預熱之后,一加Ace2 Pro的外觀真機圖在網上出現了。還是博主數碼閑聊站曝光的,這次的外觀設計還是延續了一加11的方案,只是細節上有了調整,例如新加入了鈦空灰
  • 6月安卓手機好評榜:魅族20 Pro蟬聯冠軍

    性能榜和性價比榜之后,我們來看最后的安卓手機好評榜,數據來源安兔兔評測,收集時間2023年6月1日至6月30日,僅限國內市場。第一名:魅族20 Pro好評率:95%5月份的時候魅族20 Pro就是
  • 6月安卓手機性價比榜:Note 12 Turbo斷層式碾壓

    6月份有一個618,雖然這是京東周年慶的日子,但別的電商也都不約而同的跟進了,反正促銷沒壞處,廠商和用戶都能滿意。618期間一些產品也出現了歷史低價,那么各個價位段的產品性價比
  • CSS單標簽實現轉轉logo

    轉轉品牌升級后更新了全新的Logo,今天我們用純CSS來實現轉轉的新Logo,為了有一定的挑戰性,這里我們只使用一個標簽實現,將最大化的使用CSS能力完成Logo的繪制與動畫效果。新logo
  • 在線圖片編輯器,支持PSD解析、AI摳圖等

    自從我上次分享一個人開發仿造稿定設計的圖片編輯器到現在,不知不覺已過去一年時間了,期間我經歷了裁員失業、面試找工作碰壁,寒冬下一直沒有很好地履行計劃.....這些就放在日
  • 零售大模型“干中學”,攀爬數字化珠峰

    文/侯煜編輯/cc來源/華爾街科技眼對于絕大多數登山愛好者而言,攀爬珠穆朗瑪峰可謂終極目標。攀登珠峰的商業路線有兩條,一是尼泊爾境內的南坡路線,一是中國境內的北坡路線。相
  • 騰訊蓋樓,字節拆墻

    來源 | 光子星球撰文 | 吳坤諺編輯 | 吳先之&ldquo;想重溫暴刷深淵、30+技能搭配暴搓到爽的游戲體驗嗎?一起上晶核,即刻暴打!&rdquo;曾憑借直播騰訊旗下代理格斗游戲《DNF》一
  • iQOO Neo8 Pro即將開售:到手價3099元起 安卓性能最強旗艦

    5月23日,iQOO如期舉行了新品發布會,全新的iQOO Neo8系列也正式與大家見面,包含iQOO Neo8和iQOO Neo8 Pro兩個版本,其中標準版搭載高通驍龍8+,而Pro版更
  • 華為舉行春季智慧辦公新品發布會 首次推出電子墨水屏平板

    北京時間2月27日晚,華為在巴塞羅那舉行春季智慧辦公新品發布會,在海外市場推出之前已經在中國市場上市的筆記本、平板、激光打印機等辦公產品,并首次推出搭載
Top 主站蜘蛛池模板: 股票| 随州市| 巴彦县| 嘉禾县| 太原市| 靖宇县| 永年县| 堆龙德庆县| 泰安市| 铁岭县| 佛冈县| 朔州市| 上饶市| 铜梁县| 石棉县| 藁城市| 德惠市| 漠河县| 泸溪县| 平顶山市| 金沙县| 皋兰县| 吴江市| 漳州市| 武义县| 确山县| 广安市| 广东省| 岳西县| 平遥县| 株洲市| 胶南市| 天津市| 乡城县| 塘沽区| 昆山市| 府谷县| 北票市| 临桂县| 比如县| 鸡泽县|