Quartz学习笔记

核心概念

Job

package org.quartz;
//Job 接口定义,开发者实现即可
public abstract interface Job{
    public abstract void execute(JobExecutionContext paramJobExcutionContext) 
        throws JobExecutionException;
}

注解
@DisallowConcurrentExecution:不要并发地执行Job的多个实例
@PersistJobDataAfterExecution:在成功执行Job后,更新JobDetail中JobDataMap数据

JobDetail

  • Job的属性,名称,描述等
  • JobDataMap:定义Job特例化的属性、名称、描述等。
  • Durability:可持久化
  • RequestRecovery:scheduler发生硬关闭,当scheduler重启后,该job会重新执行

Trigger

Job执行的时间点

公共属性
  • jobKey:trigger触发时被执行的job身份
  • startTime:trigger触发器第一次检测开始时间点
  • endTime:trigger失效时间点
  • priority:有N个trigger需要“同时”触发,但只有Z(Z<N)个工作线程,priority最高的Z的trigger会被首先触发。默认优先级为5
  • misfire:如果scheduler关闭或者Quartz线程池中没有可用线程来执行job,就会misfire错过触发,不同的trigger有不同的misfire机制
常用trigger
  • SimpleTrigger:简单的时间规则
    • 开始时间
    • 间隔时间
    • 运行次数
  • CronTrigger:支持cron表达式

Calendar

package org.quartz;
public interface Calendar{
    public boolean isTimeIncluded(long timeStamp);
    public long getNextIncludedTime(long timeStamp);
}

timeStamp是单位为毫秒的时间戳
排除一些节假日可以使用:org.quartz.impl.HolidayCalendar方便地实现

Scheduler

任务调度器,需要把Job和Trigger注册到调度器中

三种行为:
- 启动(start)
- 暂停(stand-by)
- 停止(shutdown)

SchedulerFactory

任务调度器的工厂类,用于产生Schedule实例

JobExecutionContext

保存job运行时的信息,scheduler引用,trigger引用,jobDetail引用
如果是恢复后的job,isRecovering()返回true

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值