Java線(xiàn)程池運(yùn)行狀態(tài)監(jiān)控實(shí)現(xiàn)解析
在實(shí)際開(kāi)發(fā)過(guò)程中,在線(xiàn)程池使用過(guò)程中可能會(huì)遇到各方面的故障,如線(xiàn)程池阻塞,無(wú)法提交新任務(wù)等。
如果你想監(jiān)控某一個(gè)線(xiàn)程池的執(zhí)行狀態(tài),線(xiàn)程池執(zhí)行類(lèi) ThreadPoolExecutor 也給出了相關(guān)的 API, 能實(shí)時(shí)獲取線(xiàn)程池的當(dāng)前活動(dòng)線(xiàn)程數(shù)、正在排隊(duì)中的線(xiàn)程數(shù)、已經(jīng)執(zhí)行完成的線(xiàn)程數(shù)、總線(xiàn)程數(shù)等。
總線(xiàn)程數(shù) = 排隊(duì)線(xiàn)程數(shù) + 活動(dòng)線(xiàn)程數(shù) + 執(zhí)行完成的線(xiàn)程數(shù)。
線(xiàn)程池使用示例:
private static ExecutorService es = new ThreadPoolExecutor(50, 100, 0L, TimeUnit.MILLISECONDS,
new LinkedBlockingQueue<Runnable>(100000));
public static void main(String[] args) throws Exception {
for (int i = 0; i < 100000; i++) {
es.execute(() -> {
System.out.print(1);
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
});
}
ThreadPoolExecutor tpe = ((ThreadPoolExecutor) es);
while (true) {
System.out.println();
int queueSize = tpe.getQueue().size();
System.out.println("當(dāng)前排隊(duì)線(xiàn)程數(shù):" + queueSize);
int activeCount = tpe.getActiveCount();
System.out.println("當(dāng)前活動(dòng)線(xiàn)程數(shù):" + activeCount);
long completedTaskCount = tpe.getCompletedTaskCount();
System.out.println("執(zhí)行完成線(xiàn)程數(shù):" + completedTaskCount);
long taskCount = tpe.getTaskCount();
System.out.println("總線(xiàn)程數(shù):" + taskCount);
Thread.sleep(3000);
}
}
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
SpringBoot使用AOP實(shí)現(xiàn)統(tǒng)一角色權(quán)限校驗(yàn)
這篇文章主要介紹了SpringBoot如何使用AOP實(shí)現(xiàn) 統(tǒng)一角色權(quán)限校驗(yàn),文中有詳細(xì)的代碼示例講解和操作流程,具有一定的參考價(jià)值,需要的朋友可以參考下2023-07-07
詳解SpringMVC和MyBatis框架開(kāi)發(fā)環(huán)境搭建和簡(jiǎn)單實(shí)用
這篇文章主要介紹了詳解SpringMVC和MyBatis框架開(kāi)發(fā)環(huán)境搭建和簡(jiǎn)單實(shí)用,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-05-05
解決Properties屬性文件中的值有等號(hào)和換行的小問(wèn)題
這篇文章主要介紹了解決Properties屬性文件中的值有等號(hào)有換行的小問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-08-08
java?Stream流常見(jiàn)操作方法(反射,類(lèi)加載器,類(lèi)加載,反射)
這篇文章主要介紹了java?Stream流常見(jiàn)操作方法(反射,類(lèi)加載器,類(lèi)加載,反射),文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定參考價(jià)值,感興趣的小伙伴可以參考一下2022-06-06
Springboot 1.5.7整合Kafka-client代碼示例
這篇文章主要介紹了Springboot 1.5.7整合Kafka-client代碼示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-10-10
Spring?Feign超時(shí)設(shè)置深入了解
Spring?Cloud中Feign客戶(hù)端是默認(rèn)開(kāi)啟支持Ribbon的,最重要的兩個(gè)超時(shí)就是連接超時(shí)ConnectTimeout和讀超時(shí)ReadTimeout,在默認(rèn)情況下,也就是沒(méi)有任何配置下,F(xiàn)eign的超時(shí)時(shí)間會(huì)被Ribbon覆蓋,兩個(gè)超時(shí)時(shí)間都是1秒2023-03-03

