回覆列表
  • 1 # 架構師成長錄

    如果想監控一個執行緒池的執行狀態,執行緒池執行類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 的使用方法後,我們想監控執行緒池的狀態就非常方便了。

  • 中秋節和大豐收的關聯?
  • 七夕節要給老婆送禮物,求大家給點意見送什麼好啊?