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

Java手動創(chuàng)建線程池代碼實例

 更新時間:2023年12月15日 09:58:09   作者:愛喝咖啡的程序員  
這篇文章主要介紹了Java手動創(chuàng)建線程池代碼實例,FixedThreadPool或者SingleThreadPool,允許的請求隊列長度為Integer.MAX_VALUE,可能會堆積大量的請求,從而導致OOM,需要的朋友可以參考下

Java手動創(chuàng)建線程池代碼實例

使用ExecutorServices直接創(chuàng)建線程池的缺點:

1. FixedThreadPool或者SingleThreadPool

允許的請求隊列長度為Integer.MAX_VALUE,可能會堆積大量的請求,從而導致OOM。

public static ExecutorService newFixedThreadPool(int nThreads) {
    return new ThreadPoolExecutor(nThreads, nThreads,
                                    0L, TimeUnit.MILLISECONDS,
                                    new LinkedBlockingQueue<Runnable>());
}
public static ExecutorService newSingleThreadExecutor() {
    return new FinalizableDelegatedExecutorService
        (new ThreadPoolExecutor(1, 1,
                                0L, TimeUnit.MILLISECONDS,
                                new LinkedBlockingQueue<Runnable>()));
}

2.CachedThreadPool

允許的創(chuàng)建線程數(shù)量為Integer.MAX_VALUE,可能會創(chuàng)建大量的線程,從而導致OOM。

public static ExecutorService newCachedThreadPool() {
    return new ThreadPoolExecutor(0, Integer.MAX_VALUE,
                                    60L, TimeUnit.SECONDS,
                                    new SynchronousQueue<Runnable>());
}

生產(chǎn)環(huán)境的做法

1. 創(chuàng)建線程工廠,指定創(chuàng)建線程時的線程名稱的命名規(guī)律

ThreadFactory nameThreadFactory = new ThreadFactoryBuilder().setNameFormat(“demo-pool-%d”).build();

2. 創(chuàng)建線程池 線程池在創(chuàng)建時可以不人為指定線程工廠,默認使用的是DefaultThreadFactory

/**
 * 各參數(shù)含義
 * corePoolSize    : 線程池中常駐的線程數(shù)量。核心線程數(shù),默認情況下核心線程會一直存活,即使處于閑置狀態(tài)也不會 
 *                   受存活時間 keepAliveTime 的限制,除非將 allowCoreThreadTimeOut 設置為 true。
 * maximumPoolSize : 線程池所能容納的最大線程數(shù)。超過這個數(shù)的線程將被阻塞。當任務隊列為沒有設置大小的
 *                         LinkedBlockingQueue時,這個值無效。
 * keepAliveTime   : 當線程數(shù)量多于 corePoolSize 時,空閑線程的存活時長,超過這個時間就會被回收
 * unit            : keepAliveTime 的時間單位
 * workQueue       : 存放待處理任務的隊列
 * threadFactory   : 線程工廠
 * handler         : 拒絕策略,拒絕無法接收添加的任務
 */
ExecutorService pool1 = new ThreadPoolExecutor(
5, 200, 0L, TimeUnit.MILLISECONDS, new LinkedBlockingQueue<Runnable>(1024));

也可以人為的指定線程工廠

ExecutorService pool2 = new ThreadPoolExecutor(
5, 200 ,0L, TimeUnit.MILLISECONDS, 
new LinkedBlockingQueue<Runnable>(1024), namedThreadFactory, 
new ThreadPoolExecutor.AbortPolicy());

到此這篇關于Java手動創(chuàng)建線程池代碼實例的文章就介紹到這了,更多相關Java線程池內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • java虛擬機運行時數(shù)據(jù)區(qū)分析

    java虛擬機運行時數(shù)據(jù)區(qū)分析

    這篇文章主要介紹了java虛擬機運行時數(shù)據(jù)區(qū)分析,具有一定參考價值,需要的朋友可以了解下。
    2017-11-11
  • Idea創(chuàng)建Jsp項目完整版教程

    Idea創(chuàng)建Jsp項目完整版教程

    一直在使用eclipse,對idea嗤之以鼻,前些日子換成了idea以后覺得太香了,這篇文章主要給大家介紹了關于Idea創(chuàng)建Jsp項目的相關資料,文中通過圖文介紹的非常詳細,對大家的學習或者工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2024-04-04
  • 深入淺出Java中重試機制的多種方式

    深入淺出Java中重試機制的多種方式

    重試機制在分布式系統(tǒng)中,或者調(diào)用外部接口中,都是十分重要的。重試機制可以保護系統(tǒng)減少因網(wǎng)絡波動、依賴服務短暫性不可用帶來的影響,讓系統(tǒng)能更穩(wěn)定的運行的一種保護機制。本文就來和大家聊聊Java中重試機制的多種方式
    2023-03-03
  • maven 使用assembly 進行打包的方法

    maven 使用assembly 進行打包的方法

    這篇文章主要介紹了maven 使用assembly 進行打包的方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-09-09
  • 淺析java class 文件

    淺析java class 文件

    以下是對java中的class文件進行了詳細的介紹,需要的朋友可以過來參考下
    2013-08-08
  • Java實戰(zhàn)之兼職平臺系統(tǒng)的實現(xiàn)

    Java實戰(zhàn)之兼職平臺系統(tǒng)的實現(xiàn)

    這篇文章主要介紹了如何利用Java編寫一個兼職平臺系統(tǒng),采用到的技術有Springboot、SpringMVC、MyBatis、ThymeLeaf等,感興趣的小伙伴可以了解一下
    2022-03-03
  • 新版本IntelliJ IDEA 構建maven,并用Maven創(chuàng)建一個web項目(圖文教程)

    新版本IntelliJ IDEA 構建maven,并用Maven創(chuàng)建一個web項目(圖文教程)

    這篇文章主要介紹了新版本IntelliJ IDEA 構建maven,并用Maven創(chuàng)建一個web項目的圖文教程,需要的朋友可以參考下
    2018-01-01
  • SpringBoot使用外部yml文件的兩種方法

    SpringBoot使用外部yml文件的兩種方法

    這篇文章主要介紹在springboot中如何使用依賴jar包中的yml文件,文中給出了兩種實現(xiàn)方法,并通過代碼和圖片講解的非常詳細,需要的朋友可以參考下
    2024-06-06
  • Spring Boot Actuator監(jiān)控的簡單使用方法示例代碼詳解

    Spring Boot Actuator監(jiān)控的簡單使用方法示例代碼詳解

    這篇文章主要介紹了Spring Boot Actuator監(jiān)控的簡單使用,本文通過實例代碼圖文相結合給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-06-06
  • Java之常用類小結案例講解

    Java之常用類小結案例講解

    這篇文章主要介紹了Java之常用類小結案例講解,本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下
    2021-07-07

最新評論