Spring ThreadPoolTaskScheduler 与 ThreadPoolTaskExecutor
Spring ThreadPoolTaskScheduler vs ThreadPoolTaskExecutor
ThreadPoolTaskScheduler
actually implements Spring's TaskExecutor
interface as well, so that a single instance can be used for asynchronous execution as soon as possible as well as scheduled, and potentially recurring, executions.
那么我们希望在 ThreadPoolTaskScheduler
个实例上使用 ThreadPoolTaskExecutor
个实例的场景是什么?
我目前正在使用 Spring XML。我正在创建 ThreadPoolTaskScheduler
的 bean,如下所示:
<task:scheduler id="myScheduler" pool-size="1"/>
而 ThreadPoolTaskExecutor
实例的 bean 可以创建为
<task:executor id="executor" pool-size="10"/>
ThreadPoolTaskExecutor
是专门用于执行任务的 class。
ThreadPoolTaskScheduler
是专门用于调度任务的class。
你在Spring文档中引用的那句话只是说你可以使用调度程序来执行任务,但这不是它的主要目的。 ThreadPoolTaskExecutor
通过其 corePoolSize
, maxPoolSize
, keepAliveSeconds
and queueCapacity
属性在线程池上提供细粒度配置。 ThreadPoolTaskScheduler
等调度程序不提供此类配置。
因此,在两者之间进行选择会产生以下问题:我是否需要执行或安排执行任务?
ThreadPoolTaskScheduler
actually implements Spring'sTaskExecutor
interface as well, so that a single instance can be used for asynchronous execution as soon as possible as well as scheduled, and potentially recurring, executions.
那么我们希望在 ThreadPoolTaskScheduler
个实例上使用 ThreadPoolTaskExecutor
个实例的场景是什么?
我目前正在使用 Spring XML。我正在创建 ThreadPoolTaskScheduler
的 bean,如下所示:
<task:scheduler id="myScheduler" pool-size="1"/>
而 ThreadPoolTaskExecutor
实例的 bean 可以创建为
<task:executor id="executor" pool-size="10"/>
ThreadPoolTaskExecutor
是专门用于执行任务的 class。ThreadPoolTaskScheduler
是专门用于调度任务的class。
你在Spring文档中引用的那句话只是说你可以使用调度程序来执行任务,但这不是它的主要目的。 ThreadPoolTaskExecutor
通过其 corePoolSize
, maxPoolSize
, keepAliveSeconds
and queueCapacity
属性在线程池上提供细粒度配置。 ThreadPoolTaskScheduler
等调度程序不提供此类配置。
因此,在两者之间进行选择会产生以下问题:我是否需要执行或安排执行任务?