最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

線程池之newFixedThreadPool定長(zhǎng)線程池的實(shí)例

 更新時(shí)間:2021年06月19日 09:00:56   作者:格子間里格子衫  
這篇文章主要介紹了線程池之newFixedThreadPool定長(zhǎng)線程池的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

newFixedThreadPool定長(zhǎng)線程池的實(shí)例

newFixedThreadPool

創(chuàng)建一個(gè)定長(zhǎng)線程池,可控制線程最大并發(fā)數(shù),超出的線程會(huì)在隊(duì)列中等待。newFixedThreadPool固定線程池, 使用完畢必須手動(dòng)關(guān)閉線程池, 否則會(huì)一直在內(nèi)存中存在。

示例代碼:

public class ThreadPoolFixed {
 public static void main(String[] args) {
  //設(shè)置線程池大小為3
  ExecutorService fixedThreadPool = Executors.newFixedThreadPool(3);
  for (int i = 0; i < 10; i++) {
   final int index = i;
   fixedThreadPool.execute(new Runnable() {
 
    @Override
    public void run() {
     try {
      System.out.println(index+"當(dāng)前線程"+Thread.currentThread().getName());
      Thread.sleep(2000);
     } catch (InterruptedException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
     }
    }
   });
  }
  fixedThreadPool.shutdown();
 }
}

運(yùn)行結(jié)果:

因?yàn)榫€程池大小為3,每個(gè)任務(wù)輸出index后sleep 2秒,所以每?jī)擅氪蛴?個(gè)數(shù)字。

定長(zhǎng)線程池的大小最好根據(jù)系統(tǒng)資源進(jìn)行設(shè)置。如Runtime.getRuntime().availableProcessors()。

corePoolSize:

線程池的基本大小,即在沒(méi)有任務(wù)需要執(zhí)行的時(shí)候線程池的大小,并且只有在工作隊(duì)列滿了的情況下才會(huì)創(chuàng)建超出這個(gè)數(shù)量的線程。

這里需要注意的是:在剛剛創(chuàng)建ThreadPoolExecutor的時(shí)候,線程并不會(huì)立即啟動(dòng),而是要等到有任務(wù)提交時(shí)才會(huì)啟動(dòng),除非調(diào)用了prestartCoreThread/prestartAllCoreThreads事先啟動(dòng)核心線程。

再考慮到keepAliveTime和allowCoreThreadTimeOut超時(shí)參數(shù)的影響,所以沒(méi)有任務(wù)需要執(zhí)行的時(shí)候,線程池的大小不一定是corePoolSize。

maximumPoolSize:

線程池中允許的最大線程數(shù),線程池中的當(dāng)前線程數(shù)目不會(huì)超過(guò)該值。

如果隊(duì)列中任務(wù)已滿,并且當(dāng)前線程個(gè)數(shù)小于maximumPoolSize,那么會(huì)創(chuàng)建新的線程來(lái)執(zhí)行任務(wù)。

這里值得一提的是largestPoolSize,該變量記錄了線程池在整個(gè)生命周期中曾經(jīng)出現(xiàn)的最大線程個(gè)數(shù)。

為什么說(shuō)是曾經(jīng)呢?因?yàn)榫€程池創(chuàng)建之后,可以調(diào)用setMaximumPoolSize()改變運(yùn)行的最大線程的數(shù)目。

poolSize:

線程池中當(dāng)前線程的數(shù)量,當(dāng)該值為0的時(shí)候,意味著沒(méi)有任何線程,線程池會(huì)終止;同一時(shí)刻,poolSize不會(huì)超過(guò)maximumPoolSize。

定長(zhǎng)線程池簡(jiǎn)易原理圖及實(shí)現(xiàn)思路

隊(duì)列中存放著實(shí)現(xiàn)了runnable接口的對(duì)象。每次有新任務(wù)的時(shí)候,就會(huì)往隊(duì)列中push進(jìn)一個(gè)對(duì)象。線程1-4需要定義為繼承了Tread類的內(nèi)部,在類中的run方法中,定一個(gè)while循環(huán),不斷的輪詢送隊(duì)列中取對(duì)象,執(zhí)行對(duì)象中的run方法。

線程中需要存放著線程池的對(duì)象的指針,便于獲取到線程池對(duì)象的隊(duì)列。

當(dāng)然,這個(gè)線程是是定長(zhǎng)的。有些情況下,定長(zhǎng)的數(shù)量不夠,或者高峰期過(guò)后,長(zhǎng)度需要降下來(lái)。這時(shí)候,就需要變長(zhǎng)的線程池了。后續(xù)繼續(xù)更新支持動(dòng)態(tài)擴(kuò)展的線程池的實(shí)現(xiàn)思路。

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

相關(guān)文章

  • java中邏輯控制舉例具體講解

    java中邏輯控制舉例具體講解

    Java程序邏輯控制通俗說(shuō)就是對(duì)代碼執(zhí)行順序的控制,這篇文章主要給大家介紹了關(guān)于java中邏輯控制的相關(guān)資料,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-01-01
  • Java優(yōu)化if-else代碼的實(shí)戰(zhàn)記錄

    Java優(yōu)化if-else代碼的實(shí)戰(zhàn)記錄

    開(kāi)發(fā)中經(jīng)常會(huì)根據(jù)不同的參數(shù)判斷走不同的邏輯業(yè)務(wù),我們常用的方法就是if/else嵌套使用,導(dǎo)致每增加一個(gè)需求就加一個(gè)if,慢慢的就會(huì)發(fā)現(xiàn)自己寫(xiě)的代碼中出現(xiàn)了大量的if/else,這篇文章主要給大家介紹了關(guān)于Java優(yōu)化if-else代碼的相關(guān)資料,需要的朋友可以參考下
    2021-09-09
  • SpringBoot監(jiān)聽(tīng)?wèi)?yīng)用程序啟動(dòng)的生命周期事件的四種方法

    SpringBoot監(jiān)聽(tīng)?wèi)?yīng)用程序啟動(dòng)的生命周期事件的四種方法

    在 Spring Boot 中,監(jiān)聽(tīng)?wèi)?yīng)用程序啟動(dòng)的生命周期事件有多種方法,本文給大家就介紹了四種監(jiān)聽(tīng)?wèi)?yīng)用程序啟動(dòng)的生命周期事件的方法,并通過(guò)代碼示例講解的非常詳細(xì),具有一定的參考價(jià)值,需要的朋友可以參考下
    2024-07-07
  • Java中的ArrayList、LinkedList、HashSet等容器詳解

    Java中的ArrayList、LinkedList、HashSet等容器詳解

    這篇文章主要介紹了Java中的ArrayList、LinkedList、HashSet等容器詳解,集合表示一組對(duì)象,稱為其元素,有些集合允許重復(fù)元素,而另一些則不允許,有些是有序的,有些是無(wú)序的,需要的朋友可以參考下
    2023-08-08
  • 詳解如何為SpringBoot項(xiàng)目中的自定義配置添加IDE支持

    詳解如何為SpringBoot項(xiàng)目中的自定義配置添加IDE支持

    這篇文章主要介紹了詳解如何為SpringBoot項(xiàng)目中的自定義配置添加IDE支持,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-02-02
  • mybatis基本實(shí)例詳解

    mybatis基本實(shí)例詳解

    這篇文章主要介紹了mybatis基本實(shí)例詳解以及mybatis自由模糊查詢,代碼簡(jiǎn)單易懂,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2017-03-03
  • Java中的main函數(shù)的詳細(xì)介紹

    Java中的main函數(shù)的詳細(xì)介紹

    這篇文章主要介紹了Java中的main函數(shù)的詳細(xì)介紹的相關(guān)資料,main()函數(shù)在java程序中必出現(xiàn)的函數(shù),這里就講解下使用方法,需要的朋友可以參考下
    2017-09-09
  • Java創(chuàng)建student類詳細(xì)代碼例子

    Java創(chuàng)建student類詳細(xì)代碼例子

    這篇文章主要給大家介紹了關(guān)于Java創(chuàng)建student類的相關(guān)資料,學(xué)生類(Student)是一種面向?qū)ο蟮木幊谈拍?其主要用于描述學(xué)生的屬性和行為,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-11-11
  • 反對(duì)使用Spring封裝的多線程類原因

    反對(duì)使用Spring封裝的多線程類原因

    這篇文章主要介紹了反對(duì)使用Spring封裝的多線程類原因,文章圍繞主題展開(kāi)詳細(xì)內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-05-05
  • MAC上IntelliJ IDEA的svn無(wú)法保存密碼解決方案

    MAC上IntelliJ IDEA的svn無(wú)法保存密碼解決方案

    今天小編就為大家分享一篇關(guān)于MAC上IntelliJ IDEA的svn無(wú)法保存密碼解決方案,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2018-10-10

最新評(píng)論

诏安县| 邵武市| 会昌县| 漯河市| 浦江县| 彭水| 通化市| 丰镇市| 崇仁县| 涪陵区| 屏东县| 铁力市| 东兰县| 景洪市| 灵丘县| 永兴县| 广丰县| 和田市| 浏阳市| 仙游县| 洪雅县| 祁连县| 家居| 定襄县| 三亚市| 沂南县| 上饶市| 拉孜县| 武川县| 佛教| 汕头市| 江西省| 乌审旗| 招远市| 株洲县| 永年县| 河北区| 灵寿县| 视频| 宁安市| 永宁县|