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

線程池的七大核心參數(shù)以及常用的四種線程池詳解

 更新時(shí)間:2025年05月07日 09:59:28   作者:機(jī)智小袁  
這篇文章主要介紹了線程池的七大核心參數(shù)以及常用的四種線程池使用方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

引言

我們通過(guò)線程池可以實(shí)現(xiàn)已創(chuàng)建線程的復(fù)用,減少資源的消耗;控制并發(fā)的數(shù)量;以及對(duì)線程進(jìn)行統(tǒng)一的管理。

下面我會(huì)對(duì)線程池的核心參數(shù)以及常用的線程池種類進(jìn)行詳細(xì)的講解。

7大核心參數(shù)

int corePoolSize 核心線程最大數(shù)量

核心線程:

  • 線程池中有兩類線程:核心線程和非核心線程。
  • 核心線程默認(rèn)情況下會(huì)一直存在于線程池中,即使這個(gè)核心線程什么都不干,而非核心線程如果長(zhǎng)時(shí)間的閑置,就會(huì)被銷毀。

int maximumPoolSize 線程總數(shù)量最大值

改值等于核心線程數(shù)+非核心線程數(shù)

long keepAliveTime 非核心線程的閑置超時(shí)時(shí)間

非核心線程閑置時(shí)間超過(guò)此值就會(huì)被銷毀

TimeUnit unit (keepAliveTime的單位)

TimeUnit是一個(gè)枚舉類型:

  • NANOSECONDS : 1微毫秒,
  • MICROSECONDS:1微秒
  • MILLSECONDS:1毫秒
  • SECONDS:1秒
  • MINUTES:1分
  • HOURS:1小時(shí)
  • DAYS:1天

BlockingQueue workQueue 阻塞隊(duì)列

常見的幾個(gè)阻塞隊(duì)列:

  • LinkedBlockingQueue

鏈?zhǔn)阶枞?duì)列,默認(rèn)大小:Interger.MAX_VALUE,可以指定大小。

  • ArrayBlockingQueue

數(shù)組阻塞隊(duì)列,需要指定大小

  • SynchronousQueue

同步隊(duì)列,內(nèi)部容量為0,每個(gè)put操作都必須等待一個(gè)take操作。反之亦然

  • DelayQueue

延遲隊(duì)列,隊(duì)列中的元素之后當(dāng)其指定的延遲時(shí)間到了,才能從隊(duì)列中獲取到改元素。

ThreadFactory threadFactory 線程工廠

創(chuàng)建線程的工廠,用于批量創(chuàng)建線程,如果不指定,會(huì)新建一個(gè)默認(rèn)的線程工廠。

RejectedExecutionHandler handler 拒絕策略

拒絕處理策略,當(dāng)無(wú)法創(chuàng)建新線程處理任務(wù)并且阻塞隊(duì)列已滿時(shí)就會(huì)采用拒絕處理策略。

jdk默認(rèn)四種策略:

  • ThreadPoolExecutor.AbortPolicy:默認(rèn)拒絕處理策略,丟棄任務(wù)并拋出異常
  • ThreadPollExecutor.DiscardPolicy:丟棄新來(lái)的任務(wù),但不拋出異常
  • ThreadPollExecutor.DiscardOldestPolicy:丟棄阻塞隊(duì)列頭部(最舊)的任務(wù),然后重新嘗試執(zhí)行程序,(如果再次失敗,重復(fù)此過(guò)程)
  • ThreadPollExecutor.CallerRunPolicy:由調(diào)用的線程去處理改任務(wù)。只適用于并發(fā)小的情況。

常用的四種線程池

newCachedThreadPool (可緩存線程池)

核心線程數(shù)為0,總線程數(shù)是最大整數(shù),當(dāng)需要執(zhí)行很多短時(shí)任務(wù)時(shí)它的服用率比較高,會(huì)顯著提升性能。并且線程空閑60s就會(huì)被回收,所以如果沒(méi)有任務(wù),它并不會(huì)占用很多資源。

newFixedThreadPool(指定工作線程數(shù)量的線程池)

核心線程數(shù)等于最大線程數(shù)。也就是該線程池中沒(méi)有非核心線程。

newSingleThreadPool(單線程化的線程池)

只有一個(gè)核心線程,所有任務(wù)按照先來(lái)先執(zhí)行的順序執(zhí)行。

newScheduledThreadPool(定長(zhǎng)線程池)

這個(gè)線程池指定了核心線程的數(shù)量,線程總數(shù)可以創(chuàng)建整數(shù)的最大數(shù)個(gè)。

該線程池支持定時(shí)以及周期性任務(wù)執(zhí)行。

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java之idea @NotNull @Nullable 注解使用

    Java之idea @NotNull @Nullable 注解使用

    這篇文章主要介紹了Java之idea @NotNull @Nullable 注解使用,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-01-01
  • SpringBoot中的404錯(cuò)誤:原因、影響及解決策略

    SpringBoot中的404錯(cuò)誤:原因、影響及解決策略

    本文詳細(xì)介紹了SpringBoot中404錯(cuò)誤的出現(xiàn)原因、影響以及處理策略,404錯(cuò)誤常見于URL路徑錯(cuò)誤、控制器配置問(wèn)題、靜態(tài)資源配置錯(cuò)誤、依賴缺失或版本不兼容、配置錯(cuò)誤和服務(wù)器配置問(wèn)題,解決方法包括檢查URL路徑、審查控制器配置、配置靜態(tài)資源
    2025-02-02
  • 2020JDK1.8安裝教程詳解(一次就可安裝成功)

    2020JDK1.8安裝教程詳解(一次就可安裝成功)

    這篇文章主要介紹了2020JDK1.8安裝教程詳解(一次就可安裝成功),本文通過(guò)圖文并茂的形式分步驟給大家講解的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2020-08-08
  • 詳解java開發(fā)webservice的幾種方式

    詳解java開發(fā)webservice的幾種方式

    webservice的應(yīng)用已經(jīng)越來(lái)越廣泛了,下面介紹幾種在Java體系中開發(fā)webservice的方式,有興趣的可以了解一下。
    2016-11-11
  • Java的Socket通訊基礎(chǔ)編程完全指南

    Java的Socket通訊基礎(chǔ)編程完全指南

    這篇文章主要介紹了Java的Socket通訊基礎(chǔ)編程,包括對(duì)Socket服務(wù)器的并發(fā)訪問(wèn)方法,是Java網(wǎng)絡(luò)編程中的重要知識(shí),相當(dāng)推薦!需要的朋友可以參考下
    2015-08-08
  • Java實(shí)現(xiàn)順序表和鏈表結(jié)構(gòu)

    Java實(shí)現(xiàn)順序表和鏈表結(jié)構(gòu)

    大家好,本篇文章主要講的是Java實(shí)現(xiàn)順序表和鏈表結(jié)構(gòu),感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話記得收藏一下
    2022-02-02
  • java接口類中的@selectProvider接口的使用及說(shuō)明

    java接口類中的@selectProvider接口的使用及說(shuō)明

    這篇文章主要介紹了java接口類中的@selectProvider接口的使用及說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • Java實(shí)現(xiàn)文件復(fù)制及文件夾復(fù)制幾種常用的方式

    Java實(shí)現(xiàn)文件復(fù)制及文件夾復(fù)制幾種常用的方式

    這篇文章主要給大家介紹了關(guān)于Java實(shí)現(xiàn)文件復(fù)制及文件夾復(fù)制幾種常用的方式,java復(fù)制文件的方式其實(shí)有不少種,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-09-09
  • Java導(dǎo)入、導(dǎo)出excel用法步驟保姆級(jí)教程(附封裝好的工具類)

    Java導(dǎo)入、導(dǎo)出excel用法步驟保姆級(jí)教程(附封裝好的工具類)

    這篇文章主要介紹了Java導(dǎo)入、導(dǎo)出excel的相關(guān)資料,講解了使用Java和ApachePOI庫(kù)將數(shù)據(jù)導(dǎo)出為Excel文件,包括創(chuàng)建工作簿、工作表、行和單元格,設(shè)置樣式和字體,合并單元格,添加公式和下拉選擇等功能,需要的朋友可以參考下
    2025-03-03
  • java虛擬機(jī)鉤子關(guān)閉函數(shù)addShutdownHook的操作

    java虛擬機(jī)鉤子關(guān)閉函數(shù)addShutdownHook的操作

    這篇文章主要介紹了java虛擬機(jī)鉤子關(guān)閉函數(shù)addShutdownHook的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-02-02

最新評(píng)論