当我们谈论ThreadPoolExecutor时,核心池大小和最大池大小之间究竟有什么区别?可以借助一个例子来解释吗?
当在方法中提交新任务
execute(java.lang.Runnable)且corePoolSize运行的线程少于正在运行时,即使其他工作线程处于空闲状态,也会创建一个新线程来处理该请求.
1)如果有空闲线程,为什么需要创建一个新线程来处理请求?
如果运行的线程数多于
corePoolSize但少于maximumPoolSize线程,则仅当队列已满时才会创建新线程.
2)我不明白corePoolSize和maximumPoolSize这里之间的区别.其次,当线程小于时,队列如何才能满maximumPoolSize?如果线程等于或大于,则队列只能是满的maximumPoolSize.不是吗?