我有一个带有 corePoolSize=1
和 maxPoolSize=1
的 ThreadPoolExecutor
,并由无界的 LinkedBlockingQueue
支持。
假设在时间 t,池中的单个线程正在处理任务 T0。队列中有一个任务T1。
在任务 T0 处理过程中设置 corePoolSize=0
会发生什么?
- 单个线程将处理任务 T1,然后变得空闲并被销毁(因为新的
corePoolSize
),或者 - 单线程在处理完任务 T0 后变得空闲,从而被销毁,任务 T1 保留在队列中,直到稍后 corePoolSize 增加 >0 ?
在线程池执行器的上下文中,线程“空闲”到底意味着什么?
最佳答案
单线程也将处理任务 T1。之后闲置一段时间后可能会被销毁。
线程处于空闲状态的情况有很多。在下面的SO帖子中对此进行了解释: When is a Java thread idle?
关于java - 线程池执行器 : changing corePoolSize at run time,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27813664/