我對我的應用程序運行負載測試,以查找支持計劃負載所需的最大線程數。Java CachedThreadPool vs FixedThreadPool
我已使用ExecutorService
CachedThreadPool
,以便線程根據負載動態創建。現在我知道使用getLargestPoolSize()
的最大線程數的值。
我應該用FixedThreadPool(maxValue)
替換CachedThreadPool
,以避免(Integer.MAX_VALUE)
線程創建行爲CachedThreadPool
?
建議他們每個人的利弊。
你指的是什麼「*大線程創建行爲*」?你的意思是,如果沒有可用的緩存線程池將創建一個新線程的事實?如果是這樣,最好的問題是「*我是否會介意我的線程被阻塞,如果我碰巧在所有工作線程都不可擦除的情況下提交另一個任務?」請記住,緩存的線程池會在一段時間後破壞線程。雖然你知道最大數量,那麼平均數是多少?如果最大值爲10,但平均值爲4,那麼保持10個線程不會有意義。 –
大的線程創建行爲 - 如果有人發送太多的請求,cachedThreadPool不應該創建Integer.MAX_VALUE線程 – MIK
找到幾個更好的答案@ https://stackoverflow.com/questions/17957382/fixedthreadpool-vs-cachedthreadpool-the-lesser-的,二,罪惡/ –