【问题标题】:ThreadPoolExecutor new threadThreadPoolExecutor 新线程
【发布时间】:2020-04-13 11:14:26
【问题描述】:

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

  1. 如果线程数小于 corePoolSize,则创建一个新线程来运行新任务。
  2. 如果线程数等于(或大于)corePoolSize,则将任务放入队列。
  3. 如果队列已满,并且线程数小于 maxPoolSize,则创建一个新线程来运行任务。
  4. 如果队列已满,且线程数大于等于 maxPoolSize,则拒绝该任务。

为什么队列已满时创建非核心线程?我不明白他们为什么这样做。队列为空时为什么不创建非核心线程?

【问题讨论】:

  • 如果队列为空,新线程将运行什么?

标签: java threadpoolexecutor


【解决方案1】:

队列满时为什么要创建非核心线程?

如果队列未满,核心线程能够满足服务需求。他们不需要额外线程的帮助,因此系统不应该创建额外的线程。

如果队列已满,则表明核心线程不足以处理传入的请求。线程池试图通过创建新线程来缓解这种情况。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-10-07
    • 2022-01-10
    • 2017-05-02
    • 1970-01-01
    • 1970-01-01
    • 2011-07-27
    • 1970-01-01
    • 2020-07-02
    相关资源
    最近更新 更多