在his famous concurrency book,Goetz的表明可使用優化線程池大小
N threads = N CPU * U CPU * (1 + W/C)
W/C
是等待到計算的比率來計算線程池中的最佳數目。我想開發一個自定義Executor
,它將使用ThreadPoolExecutor.setCorePoolSize()
調整工作線程數量,但我不知道如何計算WC比率。假設ThreadPool
是我的應用程序使用的唯一一個,我該如何計算該比率?
有沒有辦法跟蹤工作線程在等待/睡眠上花費多少時間? 還是有解決這個問題的任何實施?
請注意,應用程序的工作人員可能會改變他們的行爲,比如開始等待http響應時間更長或更短,我希望他們動態調整,從而跟蹤每個人隨着時間的推移...像jvisualvm這樣做... – vach 2015-03-13 13:55:42
isn' t Thread.getState()你需要什麼? – 2015-03-13 13:58:42
那麼我知道getState(),但我不知道如何使用它?我應該查詢所有工作線程的某個預定時間,還是有一種方法來訂閱狀態更改......或者哪些狀態是在W下進行的我假設兩個睡眠等待阻塞都是......因此我需要一些建議。 .. – vach 2015-03-13 14:04:11