如果想監控一個執行緒池的執行狀態,執行緒池執行類ThreadPoolExecutor給出了相關的 API, 能實時獲取執行緒池的以下資訊:
當前活動執行緒數
正在排隊中的執行緒數
已經執行完成的執行緒數
匯流排程數
……
匯流排程數 = 排隊執行緒數 + 活動執行緒數 + 執行完成的執行緒數
建立ThreadPoolExecutor例項:
透過ThreadPoolExecutor的API來獲取執行緒執行資訊:
執行緒池提交了 100000 個任務,但同時只有 50 個執行緒在工作,我們每間隔 3 秒來獲取當前執行緒池的執行狀態。
2.1 第一次程式輸出
當前排隊執行緒數:99950
當前活動執行緒數:50
執行完成執行緒數:0
匯流排程數(排隊執行緒數 + 活動執行緒數 + 執行完成執行緒數):100000
2.2 第二次程式輸出
當前排隊執行緒數:99800
執行完成執行緒數:150
2.3 最後輸出
當前排隊執行緒數:0
當前活動執行緒數:0
執行完成執行緒數:100000
因此,瞭解清楚這些 API 的使用方法後,我們想監控執行緒池的狀態就非常方便了。
如果想監控一個執行緒池的執行狀態,執行緒池執行類ThreadPoolExecutor給出了相關的 API, 能實時獲取執行緒池的以下資訊:
當前活動執行緒數
正在排隊中的執行緒數
已經執行完成的執行緒數
匯流排程數
……
匯流排程數 = 排隊執行緒數 + 活動執行緒數 + 執行完成的執行緒數
1. 程式碼示例建立ThreadPoolExecutor例項:
透過ThreadPoolExecutor的API來獲取執行緒執行資訊:
2. 程式碼執行分析執行緒池提交了 100000 個任務,但同時只有 50 個執行緒在工作,我們每間隔 3 秒來獲取當前執行緒池的執行狀態。
2.1 第一次程式輸出
當前排隊執行緒數:99950
當前活動執行緒數:50
執行完成執行緒數:0
匯流排程數(排隊執行緒數 + 活動執行緒數 + 執行完成執行緒數):100000
2.2 第二次程式輸出
當前排隊執行緒數:99800
當前活動執行緒數:50
執行完成執行緒數:150
匯流排程數(排隊執行緒數 + 活動執行緒數 + 執行完成執行緒數):100000
2.3 最後輸出
當前排隊執行緒數:0
當前活動執行緒數:0
執行完成執行緒數:100000
匯流排程數(排隊執行緒數 + 活動執行緒數 + 執行完成執行緒數):100000
因此,瞭解清楚這些 API 的使用方法後,我們想監控執行緒池的狀態就非常方便了。