当一个新的任务,方法
execute(java.lang.Runnable)
被提交,只有不到corePoolSize
线程在运行,创建一个新的线程来处理请求,即使其他辅助线程是空闲的。的ThreadPoolExecutor - 核心和最大池大小
1)为什么有需要创建一个新的线程来处理请求,如果有空闲的线程?
如果有多于
corePoolSize
但小于maximumPoolSize
的线程正在运行,则只有在队列已满时才会创建一个新线程。
2)我不明白corePoolSize
和maximumPoolSize
这里的区别。其次,当线程小于maximumPoolSize
时,如何满足一个队列?如果线程等于或大于maximumPoolSize
,队列只能是满的。不是吗?
1.如何执行()知道你的其他工作线程处于空闲状态?当你完成它们后,你把它们还给了游泳池吗? –
2.听起来像ThreadPoolExecutor试图维护一个比corePoolSize大但小于maximumPoolSize的可用线程池。 –
@RobertHarvey请发表这个答案。 – zEro