Java中的線程池的集中管理和監控

背景

需要將項目中的線程池統一管理,并且提供統一的監控。不至于等到程序崩潰的時候才發現。

思路

1、所有的線程池統一管理,寫死在代碼里,或者提供一個統一的配置文件。使用的時候,通過getbykey來獲取。

2、所有的線程池設置一個name和一個允許堆積的最大數量,一旦超過這個數量,發送報警郵件,給出哪個線程池堆積了多少。

實現

首先定義自己封裝過一次的線程池實體。


然后,我們再新建一個類LocalExecutorManager,用于將線程池進行集中化管理,并且啟動監控線程。監控間隔為60秒一次。如果需要的話,可以自己改。


然后我們再來看看監控的代碼:


最后,我們用junit來測試一下效果:


得出的結果如下:


總結

好處是我們把所有的線程池集中的管理起來,不允許在代碼中隨意新增線程池。并且提供了統一的監控,當程序出現異常時,我們能及早的發現并解決問題。

當然,單獨用一個線程來監控線程池,這個本身也是一種消耗,但是個人覺得這個消耗是值得的。

同時我們也對線程池的功能進行了閹割,但是這個想要放開應該也不難,自己去實現下其他3種線程池的監控即可。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容