2014-09-06 86 views
5

在我們的應用程序中,我們有很多ThreadPoolExecutor s。當應用程序空閒時,ThreadPoolExecutor也是空閒的,但應用程序中空閒線程的數量非常高。在ThreadPoolExecutor中設置allowCoreThreadTimeOut()是否是一個好習慣?

在線程轉儲中,我發現大多數線程都屬於ThreadPoolExecutor等待任務。保持這些工作線程活着有沒有副作用?我是否應該在ThreadPoolExecutor中使用setAllowCoreThreadTimeOut(),以便工作線程在空閒一段時間後死亡?

回答

3

每個線程都有一個關聯的堆棧,需要一些內存(可配置)。如果你的線程處於等待狀態(即使它們不是),它們正在保留該內存。它不能被其他應用程序使用。因此,停止這些線程(使用setAllowCoreThreadTimeout()),釋放它們保留的內存並讓ThreadPoolExecutor根據需要重新創建它們可能是有意義的。

相關問題