ThreadPoolTaskScheduler
实际上也实现了Spring的TaskExecutor
接口,因此单个实例可以尽快用于异步执行,也可以用于计划和可能重复执行。
那么我们希望在ThreadPoolTaskExecutor
个实例上使用ThreadPoolTaskScheduler
个实例的场景是什么?
我目前正在使用Spring XML。我正在创建ThreadPoolTaskScheduler
的bean,如下所示:
<task:scheduler id="myScheduler" pool-size="1"/>
而ThreadPoolTaskExecutor
实例的bean可以创建为
<task:executor id="executor" pool-size="10"/>
答案 0 :(得分:15)
ThreadPoolTaskExecutor
是一个用于执行任务的专用类。ThreadPoolTaskScheduler
是一个专门用于安排任务的类。您在Spring文档中引用的句子只是说可以使用调度程序来执行任务,但这不是它的主要目的。 ThreadPoolTaskExecutor
通过其corePoolSize
,maxPoolSize
,keepAliveSeconds
和queueCapacity
属性在线程池上提供细粒度配置。诸如ThreadPoolTaskScheduler
之类的调度程序不提供此类配置。
因此,在两者之间进行选择会产生以下问题:我是否需要执行或安排执行任务?