ScheduledExecutorService 中的线程排队
Thread queuing in ScheduledExecutorService
我对 ScheduledExecutorService
的工作方式有疑问,假设我已经声明了这样一个执行者:
private static final ScheduledExecutorService SCHEDULED_EXECUTOR = Executors.newScheduledThreadPool(2);
而且,这是我将要创建的任务 运行 一天过去后:
SCHEDULED_EXECUTOR.schedule(() -> {
// do stuff
}, 1, TimeUnit.DAYS);
如果同时收到4个请愿,把所有的定时器运行都做,然后只有两个线程运行并行?或者只有两个定时器 运行 并行?
您将 ExecutorService 配置为使用两个线程。这意味着(最多)两个线程将并行处理任务。
所以当 4 个提交进来时,它们将 "dispatched" 到这两个线程。
仅此而已。
我对 ScheduledExecutorService
的工作方式有疑问,假设我已经声明了这样一个执行者:
private static final ScheduledExecutorService SCHEDULED_EXECUTOR = Executors.newScheduledThreadPool(2);
而且,这是我将要创建的任务 运行 一天过去后:
SCHEDULED_EXECUTOR.schedule(() -> {
// do stuff
}, 1, TimeUnit.DAYS);
如果同时收到4个请愿,把所有的定时器运行都做,然后只有两个线程运行并行?或者只有两个定时器 运行 并行?
您将 ExecutorService 配置为使用两个线程。这意味着(最多)两个线程将并行处理任务。
所以当 4 个提交进来时,它们将 "dispatched" 到这两个线程。
仅此而已。