Spring ThreadPoolTaskScheduler与ThreadPoolTaskExecutor的区别

28

Spring文档中提到:

ThreadPoolTaskScheduler实际上也实现了Spring的TaskExecutor接口,因此可以使用单个实例进行尽可能快速的异步执行以及计划的、可能是重复的执行。

那么,在哪些情况下我们会使用ThreadPoolTaskExecutor实例而不是ThreadPoolTaskScheduler实例呢?

我目前正在使用Spring XML。我创建ThreadPoolTaskScheduler的bean如下所示:

<task:scheduler id="myScheduler" pool-size="1"/>

可以创建ThreadPoolTaskExecutor实例的豆子如下:

<task:executor id="executor" pool-size="10"/>
1个回答

34

Spring文档中引用的这句话只是在说你可以使用调度器来执行任务,但这不是其主要目的。ThreadPoolTaskExecutor 通过其 corePoolSizemaxPoolSizekeepAliveSecondsqueueCapacity 属性提供了对线程池的精细配置。而像 ThreadPoolTaskScheduler 这样的调度器则不提供这样的配置。

因此,选择两者之间的区别可以归结为以下问题:我需要执行还是调度执行任务?


谢谢,这确实帮助我更好地理解Executor和Scheduler之间的区别。 - Awanish Kumar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接