java線程池:獲取運行線程數(shù)并控制線程啟動速度的方法
在java里, 我們可以使用Executors.newFixedThreadPool 來創(chuàng)建線程池, 然后就可以不停的創(chuàng)建新任務,并用線程池來執(zhí)行了。
在提交任務時,如果線程池已經(jīng)被占滿,任務會進到一個隊列里等待執(zhí)行。
這種機制在一些特定情況下會有些問題。今天我就遇到一種情況:創(chuàng)建線程比線程執(zhí)行的速度要快的多,而且單個線程占用的內(nèi)存又多,所以很快內(nèi)存就爆了。
想了一個辦法,就是在提交任務之前,先檢查目前正在執(zhí)行的線程數(shù)目,只有沒把線程池占滿的時候在去提交任務。
代碼很簡單:
int threadCount = ((ThreadPoolExecutor)executor).getActiveCount();
// System.out.println("running : " + threadCount);
while (threadCount == POOL_SIZE) {
TimeUnit.MILLISECONDS.sleep(1);
threadCount = ((ThreadPoolExecutor)executor).getActiveCount();
// System.out.println("running : " + threadCount);
}
executor.execute
以上這篇java線程池:獲取運行線程數(shù)并控制線程啟動速度的方法就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Spring中的@EnableScheduling定時任務注解
這篇文章主要介紹了Spring中的@EnableScheduling注解,@EnableScheduling是 Spring Framework 提供的一個注解,用于啟用 Spring 的定時任務功能,通過使用這個注解,可以在 Spring 應用程序中創(chuàng)建定時任務,需要的朋友可以參考下2024-01-01
基于Java實現(xiàn)文件和base64字符串轉(zhuǎn)換
這篇文章主要介紹了基于Java實現(xiàn)文件和base64字符串轉(zhuǎn)換,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2020-01-01
spring Boot查詢數(shù)據(jù)分頁顯示的方法實例
這篇文章主要給大家介紹了關(guān)于spring Boot查詢數(shù)據(jù)分頁顯示的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用spring Boot具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧2020-08-08
Java?Float?保留小數(shù)位精度的實現(xiàn)
這篇文章主要介紹了Java?Float?保留小數(shù)位精度的實現(xiàn)方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-12-12
java如何執(zhí)行bat腳本,并監(jiān)控執(zhí)行結(jié)果
這篇文章主要介紹了java如何執(zhí)行bat腳本,并監(jiān)控執(zhí)行結(jié)果問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-07-07
SpringBoot 項目使用hutool 工具進行 http 接口調(diào)用的處理方
在實際的開發(fā)過程中一個互聯(lián)網(wǎng)的項目來說 ,有可能會涉及到調(diào)用外部接口的實際業(yè)務場景,下面通過本文給大家介紹SpringBoot 項目 使用hutool 工具進行 http 接口調(diào)用的處理方法,需要的朋友可以參考下2022-06-06

