Quartz与Spring Task的区别

1、相同点:

两者均能实现定时调度任务

2、Quartz

① 默认多线程异步执行

② 单个任务时,在上一个调度未完成时,下一个调度时间到时,会另起一个线程开始新的调度。业务繁忙时,一个任务会有多个调度,可能导致数据处理异常。

③ 多个任务时,任务之间没有直接影响,多任务执行的快慢取决于CPU的性能

④ 触发方式 : (1)SimpleTrigger (2)CronTrigger

⑥ 能被集群实例化,支持分布式部署

⑦使用JobStoreCMT(JDBCJobStore的子类),Quartz 能参与JTA事务;Quartz 能管理JTA事务(开始和提交)在执行任务之间,这样,任务做的事就可以发生在JTA事务里。

3、Task:

① 默认单线程同步执行

② 单个任务时,当前次的调度完成后,再执行下一次任务调度

③ 多个任务时,一个任务执行完成后才会执行下一个任务。若需要任务能够并发执行,需手动设置线程

④ 触发方式:

与Quartz的CronTrigger的表达式类似

可以使用注解标注定时任务

4、总结:

1:pring task使用和配置起来更简单,更轻量。

2:任务执行,spring task的调度任务是串行的,意思就是如果配了多个任务的话,前面一个任务没有结束,后面的任务即使是时间到点了也不会跑。Quartz采用多线程 ,quartz默认情况下可以跑,不过网上说配置下也可以控制等上一个任务结束才能跑。

3:实现,Task注解实现方式,比较简单。Quartz需要手动配置Jobs。

4:调度,Task采用顺序执行:若当前调度占用时间过长,下一个调度无法及时执行;

Quartz采用异步:下一个调度时间到达时,会另一个线程执行调度,不会发生阻塞问题,但调度过多时可能导致数据处理异常

5:部署,Quartz可以采用集群方式,分布式部署到多台机器,分配执行定时任务

相关推荐
考虑考虑29 分钟前
JDK9中的dropWhile
java·后端·java ee
想躺平的咸鱼干38 分钟前
Volatile解决指令重排和单例模式
java·开发语言·单例模式·线程·并发编程
hqxstudying1 小时前
java依赖注入方法
java·spring·log4j·ioc·依赖
·云扬·1 小时前
【Java源码阅读系列37】深度解读Java BufferedReader 源码
java·开发语言
春生野草2 小时前
关于SpringMVC的整理
spring
martinzh2 小时前
Spring AI 项目介绍
后端
Bug退退退1232 小时前
RabbitMQ 高级特性之重试机制
java·分布式·spring·rabbitmq
小皮侠2 小时前
nginx的使用
java·运维·服务器·前端·git·nginx·github
前端付豪2 小时前
20、用 Python + API 打造终端天气预报工具(支持城市查询、天气图标、美化输出🧊
后端·python
爱学习的小学渣2 小时前
关系型数据库
后端