Spring ThreadPoolTask​​Executor 队列中的线程何时进入 运行 状态?

When does a thread in Spring ThreadPoolTaskExecutor queue get into running state?

我使用的核心池大小为 3,队列大小为 50,最大池大小为 500。

假设核心池和队列有如下线程

core pool = [A, B, C] queue = [D, E, F]

线程D是否只有在核心池中的一个线程执行完后才执行? 或

运行 线程可以说核心池中的 B 进入等待状态并且线程 D 被拉入核心池吗?

A、B 或 C 任务中的一个必须先完成,池才能开始另一个任务。每个任务 运行s 完成或取消之前,进入等待状态不会释放工作线程。

这里是 ThreadPoolExecutor 的 openjdk 代码:http://hg.openjdk.java.net/jdk8/jdk8/jdk/file/687fd7c7986d/src/share/classes/java/util/concurrent/ThreadPoolExecutor.java。有一个 运行Worker 方法获取下一个任务并在其上调用 运行(第 1141 行)。