每个单独任务的唯一实例TaskScheduler vs实例

时间:2015-11-04 11:44:43

标签: multithreading spring concurrency

我正在上课 https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/scheduling/TaskScheduler.html 管理某些任务的定期执行。 我有一组必须定期执行的独立任务(在同一个数据库上运行) 我实际上在做的是为每个任务创建一个新的TaskScheduler

TaskScheduler scheduler = new ThreadPoolTaskScheduler();
    ((ThreadPoolTaskScheduler)scheduler).afterPropertiesSet();
scheduler.schedule(new task1(), new CronTrigger("* * */2 * * *"));
.....
TaskScheduler scheduler2 = new ThreadPoolTaskScheduler();
    ((ThreadPoolTaskScheduler)scheduler2).afterPropertiesSet();
scheduler2.schedule(new task2(), new CronTrigger("* * */10 * * *"));    

我想要了解更好的是创建一个TaskScheduler的唯一实例并使用它来安排所有任务,或者没有很大的优势。 在任务不同的情况下,池的兴趣是什么..

1 个答案:

答案 0 :(得分:0)

一般来说,它是一样的。但你必须要考虑一些因素。

如果您有不同类型的任务,最好将它们分组到不同的调度程序中。可能你可以停止某种类型的任务,这样就可以让它们在不同的调度程序中执行,而不会影响其他任务。

如果你有很多任务,那么以这种方式将它们放在不同的调度程序中会更好,调度程序可以更容易地管理它们。