This question already has answers here:
What is the difference between corePoolSize and maxPoolSize in the Spring ThreadPoolTaskExecutor

(6个答案)


3年前关闭。






1)如果有空闲线程,为什么需要创建一个新线程来处理请求?



2)我不明白corePoolSizemaximumPoolSize之间的区别。其次,当线程小于maximumPoolSize时,队列如何充满?仅当线程等于或大于maximumPoolSize时,队列才能满。是不是

最佳答案

简单来说,这是Sun的线程创建规则:

  • 如果线程数小于corePoolSize,请创建一个新的Thread以运行新任务。
  • 如果线程数等于(或大于)corePoolSize,则将任务放入队列。
  • 如果队列已满,并且线程数少于maxPoolSize,则创建一个新线程以在其中运行任务。
  • 如果队列已满,并且线程数大于或等于maxPoolSize,则拒绝任务。

  • Full article

    关于java - ThreadPoolExecutor-核心和最大池大小,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17660048/

    10-09 04:40