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

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

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

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

Z1228資訊網(wǎng)——每日最新資訊28at.com

線程池的 7 大參數(shù)整理。Z1228資訊網(wǎng)——每日最新資訊28at.com

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

corePoolSize 線程池中長期存活的線程數(shù)

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

maximumPoolSize 線程池中的最大線程數(shù)量

maximumPoolSize >= corePoolSize,maximumPoolSize>0Z1228資訊網(wǎng)——每日最新資訊28at.com

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

keepAliveTime 空閑線程存活時間

當線程池線程數(shù)量超過corePoolSize時,多余的空閑線程會在多長時間內(nèi)被銷毀。Z1228資訊網(wǎng)——每日最新資訊28at.com

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

TimeUnit 時間單位

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

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

BlockingQueue

提交但未執(zhí)行的任務(wù)隊列,有以下選項:Z1228資訊網(wǎng)——每日最新資訊28at.com

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

ThreadFactory 創(chuàng)建線程的工廠

線程池創(chuàng)建線程時調(diào)用的工廠方法,通過此方法可以設(shè)置線程的優(yōu)先級、線程命名規(guī)則以及線程類型(用戶線程還是守護線程)等。一般情況下使用默認的,即Executors類的靜態(tài)方法defaultThreadFactory(),也可以自定義。Z1228資訊網(wǎng)——每日最新資訊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) {        // 創(chuàng)建線程工廠        ThreadFactory threadFactory = new ThreadFactory() {            @Override            public Thread newThread(Runnable runnable) {                // 創(chuàng)建線程池中的線程                Thread thread = new Thread(runnable);                // 設(shè)置線程名稱                thread.setName("Thread-" + runnable.hashCode());                // 設(shè)置線程優(yōu)先級(最大值:10)                thread.setPriority(Thread.MAX_PRIORITY);                //......                return thread;            }        };        // 創(chuàng)建線程池        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,線程優(yōu)先級:%d",thread.getName(), thread.getPriority()));                }            });        }catch (Exception e) {        } finally {            threadPoolExecutor.shutdown();        }    }}

Z1228資訊網(wǎng)——每日最新資訊28at.com

Executors.defaultThreadFactory()Z1228資訊網(wǎng)——每日最新資訊28at.com

RejectedExecutionHandler

拒絕策略。當線程池的任務(wù)超出線程池隊列可以存儲的最大值之后,執(zhí)行的策略。Z1228資訊網(wǎng)——每日最新資訊28at.com

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

Z1228資訊網(wǎng)——每日最新資訊28at.com

new一個線程池Z1228資訊網(wǎng)——每日最新資訊28at.com

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

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

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

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

標簽:
  • 熱門焦點
  • 0糖0卡0脂 旭日森林仙草烏龍茶優(yōu)惠:15瓶到手29元

    旭日森林無糖仙草烏龍茶510ml*15瓶平時要賣為79.9元,今日下單領(lǐng)取50元優(yōu)惠券,到手價為29.9元。產(chǎn)品規(guī)格:0糖0卡0脂,添加草本仙草汁,清涼爽口,富含茶多酚,保留
  • 服務(wù)存儲設(shè)計模式:Cache-Aside模式

    Cache-Aside模式一種常用的緩存方式,通常是把數(shù)據(jù)從主存儲加載到KV緩存中,加速后續(xù)的訪問。在存在重復度的場景,Cache-Aside可以提升服務(wù)性能,降低底層存儲的壓力,缺點是緩存和底
  • 如何使用JavaScript創(chuàng)建一只圖像放大鏡?

    譯者 | 布加迪審校 | 重樓如果您曾經(jīng)瀏覽過購物網(wǎng)站,可能遇到過圖像放大功能。它可以讓您放大圖像的特定區(qū)域,以便瀏覽。結(jié)合這個小小的重要功能可以大大改善您網(wǎng)站的用戶體驗
  • 多線程開發(fā)帶來的問題與解決方法

    使用多線程主要會帶來以下幾個問題:(一)線程安全問題  線程安全問題指的是在某一線程從開始訪問到結(jié)束訪問某一數(shù)據(jù)期間,該數(shù)據(jù)被其他的線程所修改,那么對于當前線程而言,該線程
  • 拼多多APP上線本地生活入口,群雄逐鹿萬億市場

    Tech星球(微信ID:tech618)文 | 陳橋輝 Tech星球獨家獲悉,拼多多在其APP內(nèi)上線了&ldquo;本地生活&rdquo;入口,位置較深,位于首頁的&ldquo;充值中心&rdquo;內(nèi),目前主要售賣美食相關(guān)的
  • iQOO Neo8 Pro即將開售:到手價3099元起 安卓性能最強旗艦

    5月23日,iQOO如期舉行了新品發(fā)布會,全新的iQOO Neo8系列也正式與大家見面,包含iQOO Neo8和iQOO Neo8 Pro兩個版本,其中標準版搭載高通驍龍8+,而Pro版更
  • 回歸OPPO兩年,一加贏了銷量,輸了品牌

    成為OPPO旗下主打性能的先鋒品牌后,一加屢創(chuàng)佳績。今年618期間,一加手機全渠道銷量同比增長362%,憑借一加 11、一加 Ace 2、一加 Ace 2V三款爆品,一加
  • 最薄的14英寸游戲筆記本電腦 Alienware X14已可以購買

    2022年1月份在國際消費電子展(CES2022)上首次亮相的Alienware新品——Alienware X14現(xiàn)在已經(jīng)可以購買了,這款筆記本電腦被譽為世界上最薄的 14 英寸游戲筆
  • “買真退假” 這種“羊毛”不能薅

    □ 法治日報 記者 王春   □ 本報通訊員 胡佳麗  2020年初,還在上大學的小東加入了一個大學生兼職QQ群。群主&ldquo;七王&rdquo;在群里介紹一些刷單賺
Top 主站蜘蛛池模板: 宁阳县| 神池县| 阜宁县| 四平市| 确山县| 泾川县| 曲阳县| 阿瓦提县| 道孚县| 敦煌市| 辉南县| 通道| 东乡县| 习水县| 夏邑县| 江口县| 嘉峪关市| 西丰县| 克山县| 定远县| 景德镇市| 宝兴县| 景洪市| 施秉县| 贵港市| 榕江县| 浪卡子县| 景东| 宽城| 阳朔县| 台中市| 习水县| 页游| 三亚市| 栾川县| 布尔津县| 吴忠市| 安乡县| 甘谷县| 壶关县| 尚志市|