線程池監控

系統中大量使用線程池,有必要對線程池進行監控。線程

能夠監控以下指標:code

  • 能夠檢測到正在執行的線程數。
  • 能夠檢測任務隊列堆積任務數。
  • 能夠檢測活動線程數。
  • 能夠檢測最大線程數。

具體以下:繼承

  • queue.size:獲取線程池任務隊列數量。
  • taskCount:線程池須要執行的任務數量。
  • completedTaskCount:線程池在運行過程當中已完成的任務數量。小於或等於taskCount。
  • largestPoolSize:線程池曾經建立過的最大線程數量。經過這個數據能夠知道線程池是否滿過。如等於線程池的最大大小,則表示線程池曾經滿了。
  • getPoolSize:線程池的線程數量。若是線程池不銷燬的話,池裏的線程不會自動銷燬,因此這個大小隻增不減。
  • getActiveCount:獲取活動的線程數。

經過擴展線程池進行監控,經過繼承線程池並重寫線程池的beforeExecute,afterExecute和terminated方法,咱們能夠在任務執行前,執行後和線程池關閉前幹一些事情。如監控任務的平均執行時間,最大執行時間和最小執行時間等。隊列

這幾個方法在線程池裏是空方法。如: protected void beforeExecute(Thread t, Runnable r) { }get

相關文章
相關標籤/搜索