java線程池:獲取運(yùn)行線程數(shù)并控制線程啟動(dòng)速度的方法
在java里, 我們可以使用Executors.newFixedThreadPool 來(lái)創(chuàng)建線程池, 然后就可以不停的創(chuàng)建新任務(wù),并用線程池來(lái)執(zhí)行了。
在提交任務(wù)時(shí),如果線程池已經(jīng)被占滿,任務(wù)會(huì)進(jìn)到一個(gè)隊(duì)列里等待執(zhí)行。
這種機(jī)制在一些特定情況下會(huì)有些問(wèn)題。今天我就遇到一種情況:創(chuàng)建線程比線程執(zhí)行的速度要快的多,而且單個(gè)線程占用的內(nèi)存又多,所以很快內(nèi)存就爆了。
想了一個(gè)辦法,就是在提交任務(wù)之前,先檢查目前正在執(zhí)行的線程數(shù)目,只有沒把線程池占滿的時(shí)候在去提交任務(wù)。
代碼很簡(jiǎn)單:
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線程池:獲取運(yùn)行線程數(shù)并控制線程啟動(dòng)速度的方法就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
idea新建springboot項(xiàng)目pom文件報(bào)錯(cuò)問(wèn)題及解決
這篇文章主要介紹了idea新建springboot項(xiàng)目pom文件報(bào)錯(cuò)問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-04-04Mybatis-Plus自動(dòng)填充更新操作相關(guān)字段的實(shí)現(xiàn)
數(shù)據(jù)庫(kù)表中應(yīng)該都要有create_time、update_time字段;那么在開發(fā)中,對(duì)于這些共有字段的處理應(yīng)該要進(jìn)行統(tǒng)一,這樣就可以簡(jiǎn)化我們的開發(fā)過(guò)程。那么本文就對(duì)Mybatis-Plus中的字段自動(dòng)填充進(jìn)行記錄2021-11-11Spring?EnableAsync注解異步執(zhí)行源碼解析
這篇文章主要為大家介紹了Spring?EnableAsync注解源碼解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-11-11SpringCloud服務(wù)注冊(cè)和發(fā)現(xiàn)組件Eureka
對(duì)于微服務(wù)的治理而言,其核心就是服務(wù)的注冊(cè)和發(fā)現(xiàn)。在SpringCloud 中提供了多種服務(wù)注冊(cè)與發(fā)現(xiàn)組件,官方推薦使用Eureka。本篇文章,我們來(lái)講解springcloud的服務(wù)注冊(cè)和發(fā)現(xiàn)組件,感興趣的可以了解一下2021-05-05Java實(shí)現(xiàn)Word/Pdf/TXT轉(zhuǎn)html的實(shí)例代碼
本文主要介紹了Java實(shí)現(xiàn)Word/Pdf/TXT轉(zhuǎn)html的實(shí)例代碼,代碼簡(jiǎn)單易懂,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-02-02Java實(shí)現(xiàn)高并發(fā)秒殺的幾種方式
高并發(fā)場(chǎng)景在現(xiàn)場(chǎng)的日常工作中很常見,本文主要介紹了Java實(shí)現(xiàn)高并發(fā)秒殺的幾種方式,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-05-05