Spring ThreadPoolTaskExecutor 队列中的线程何时进入 运行 状态?
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 行)。
我使用的核心池大小为 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 行)。