AVt天堂网 手机版,亚洲va久久久噜噜噜久久4399,天天综合亚洲色在线精品,亚洲一级Av无码毛片久久精品

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

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

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

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

線程池的 7 大參數整理。pBb28資訊網——每日最新資訊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。pBb28資訊網——每日最新資訊28at.com

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

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

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

keepAliveTime 空閑線程存活時間

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

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

TimeUnit 時間單位

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

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

BlockingQueue

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

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

ThreadFactory 創建線程的工廠

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

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

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

RejectedExecutionHandler

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

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

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

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

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

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

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

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

標簽:
  • 熱門焦點
  • 盧偉冰長文解析K60至尊版 對Redmi有著里程碑式的意義

    在今天的Redmi后性能時代戰略發布會結束之后,Redmi總經理盧偉冰又帶來了一篇長文,詳解了為什么 Redmi 要開啟后性能時代?為什么選擇和 MediaTek、Pixelworks 深度合作?以及后性
  • 從零到英雄:高并發與性能優化的神奇之旅

    作者 | 波哥審校 | 重樓作為公司的架構師或者程序員,你是否曾經為公司的系統在面對高并發和性能瓶頸時感到手足無措或者焦頭爛額呢?筆者在出道那會為此是吃盡了苦頭的,不過也得
  • 雅柏威士忌多款單品價格大跌,泥煤頂流也不香了?

    來源 | 烈酒商業觀察編 | 肖海林今年以來,威士忌市場開始出現了降溫跡象,越來越多不斷暴漲的網紅威士忌也開始悄然回歸市場理性。近日,LVMH集團旗下蘇格蘭威士忌品牌雅柏(Ardbeg
  • 本地生活這塊肥肉,拼多多也想吃一口

    出品/壹覽商業 作者/李彥編輯/木魚拼多多也看上本地生活這塊蛋糕了。近期,拼多多在App首頁&ldquo;充值中心&rdquo;入口上線了本機生活界面。壹覽商業發現,該界面目前主要
  • 東方甄選單飛:有些鳥注定是關不住的

    文/彭寬鴻編輯/羅卿東方甄選創始人俞敏洪帶隊的&ldquo;7天甘肅行&rdquo;直播活動已在近日順利收官。成立后一年多時間里,東方甄選要脫離抖音自立門戶的傳聞不絕于耳,&ldquo;7
  • 阿里大調整

    來源:產品劉有媒體報道稱,近期淘寶天貓集團啟動了近年來最大的人力制度改革,涉及員工績效、層級體系等多個核心事項,目前已形成一個初步的&ldquo;征求意見版&rdquo;:1、取消P序列
  • 重估百度丨大模型,能撐起百度的“今天”嗎?

    自象限原創 作者|程心 羅輯2023年之前,對于自己的&ldquo;今天&rdquo;,百度也很迷茫。&ldquo;新業務到 2022 年底還是 0,希望 2023 年出來一個 1。&rdquo;這是2022年底,李彥宏
  • 華為Mate60標準版細節曝光:經典星環相機模組回歸

    這段時間以來,關于華為新旗艦的爆料日漸密集。據此前多方爆料,今年華為將開始恢復一年雙旗艦戰略,除上半年推出的P60系列外,往年下半年的Mate系列也將
  • 微軟發布Windows 11新版 引入全新任務欄狀態

    近日,微軟發布了Windows 11新版,而Build 22563更新主要引入了幾周前曝光的平板模式任務欄等,系統更流暢了。更新中,Windows 11加入了專門針對平板優化的任務欄
Top