quartz在job间隔期间内,保证上一个任务执行完后,再去调度下一个任务
来源:互联网 发布:联通申请开通80端口 编辑:程序博客网 时间:2024/03/29 05:35
Quartz定时任务默认都是并发执行的,不会等待上一次任务执行完毕,只要间隔时间到就会执行,这样往往会导致我们执行的数据不正确。如果定时任执行太长,会长时间占用资源,导致其它任务堵塞。
解决办法:
1.在Spring中这时需要设置concurrent的值为false, 禁止并发执行。
<property name="concurrent" value="true" />
2.当不使用spring的时候就需要在Job的实现类上加@DisallowConcurrentExecution的注释
@DisallowConcurrentExecution 禁止并发执行多个相同定义的JobDetail, 这个注解是加在Job类上的, 但意思并不是不能同时执行多个Job, 而是不能并发执行同一个Job Definition(由JobDetail定义), 但是可以同时执行多个不同的JobDetail, 举例说明,我们有一个Job类,叫做SayHelloJob, 并在这个Job上加了这个注解, 然后在这个Job上定义了很多个JobDetail, 如sayHelloToJoeJobDetail, sayHelloToMikeJobDetail, 那么当scheduler启动时, 不会并发执行多个sayHelloToJoeJobDetail或者sayHelloToMikeJobDetail, 但可以同时执行sayHelloToJoeJobDetail跟sayHelloToMikeJobDetail
@PersistJobDataAfterExecution 同样, 也是加在Job上,表示当正常执行完Job后, JobDataMap中的数据应该被改动, 以被下一次调用时用。当使用@PersistJobDataAfterExecution 注解时, 为了避免并发时, 存储数据造成混乱, 强烈建议把@DisallowConcurrentExecution注解也加上。
(但是这样会导致任务的执行不是按照我们预先定义的时间间隔执行)
- quartz在job间隔期间内,保证上一个任务执行完后,再去调度下一个任务
- quartz在job间隔期间内,保证上一个任务执行完后,再去执行下一个任务
- quartz-定时任务-设置job顺序执行,上一次job执行完成后,再执行下一次job
- Quartz任务调度、手动执行定时任务
- Quartz 调度,添加,修改,删除 任务,Job
- 任务调度(Quartz Enterprise Job Scheduler)
- 任务调度(Quartz Enterprise Job Scheduler)
- Quartz Job & Spring 动态任务调度
- 【转】quartz框架:任务执行间隔
- springmvc + quartz任务调度执行多次问题
- java使用quartz执行任务调度
- quartz 暂停后重新启动,在暂停时 被暂停后的任务,在启动后会补偿执行即 会连续多次调用job中的execute方法。
- java中quartz 调度在一些定时任务(job)的入门级应用
- Quartz (二) Job任务
- spring3与 quartz job 任务调度的整合
- net利用quartz任务调度,开发Job管理系统一
- 企业级任务调度框架Quartz 四 多个job实例注册到任务调度器上
- Quartz任务调度
- @RequestBody, @ResponseBody 注解详解
- 锐聘学院Java视频笔记
- Mac 使用homebrew搭建 PHP 运行环境
- The All-purpose Zero||HDU5773
- Python + Statsd + Graphite 搭建监控平台
- quartz在job间隔期间内,保证上一个任务执行完后,再去调度下一个任务
- matlab里纯色图像确定图像光点位置
- idea导入github上的项目
- 自定义task生成jar包
- java 异常
- jmeter jdbc无法通过IP连接到mysql解决方案
- C标准库之零:C标准库概述
- mysql省市区信息表
- 猜字小游戏