在我们的应用程序中,我们有很多ThreadPoolExecutor
。当应用程序处于空闲状态时,ThreadPoolExecutor
也处于空闲状态,但是应用程序中的空闲线程数非常高。
在线程转储中,我发现大多数线程都属于ThreadPoolExecutor
等待任务。使这些辅助线程保持 Activity 状态是否有任何副作用?我应该在setAllowCoreThreadTimeOut()
中使用ThreadPoolExecutor
以便工作线程在空闲一段时间后死亡吗?
最佳答案
每个线程都有一个关联的堆栈,该堆栈需要一定数量的内存(可配置)。如果您的线程处于等待状态(即使不是),它们将保留该内存。您的应用程序的其余部分无法使用它。因此,停止这些线程(使用setAllowCoreThreadTimeout()
),释放它们已保留的内存并让ThreadPoolExecutor
根据需要重新创建它们可能是有意义的。
关于java - 在ThreadPoolExecutor中设置allowCoreThreadTimeOut()是一种好习惯吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25700846/