Lession2:The Quartz API, Jobs And Triggers

官网教程链接

Quartz API中的主要接口

  • Scheduler:包含JobDetail和Trigger的注册信息,负责执行job(当其关联的Trigger启动时)
  • Job :被Scheduler调用执行
  • JobDetail :定义Job
  • Trigger :定义给定Job的哪个schedule执行
  • JobBuilder :定义/创建 JobDetail对象
  • TriggerBuilder :定义/创建Trigger对象

一个Scheduler的生命周期,通过SchedulerFactory的创建开始,直到其调用shutdown()方法结束。一旦Scheduler被创建了就可以添加、移除、列举Job和Trigger,并且能执行其他和调度相关的操作。然而,除非Scheduler通过调用start() 方法启动了,否则它不能作用于任何trigger。

// define the job and tie it to our HelloJob class
  JobDetail job = newJob(HelloJob.class)
      .withIdentity("myJob", "group1") // name "myJob", group "group1"
      .build();

  // Trigger the job to run now, and then every 40 seconds
  Trigger trigger = newTrigger()
      .withIdentity("myTrigger", "group1")
      .startNow()
      .withSchedule(simpleSchedule()
          .withIntervalInSeconds(40)
          .repeatForever())            
      .build();

  // Tell quartz to schedule the job using our trigger
  sched.scheduleJob(job, trigger);

上面的这块代码,创建了Job的定义和trigger,分别用了JobBuilder类的静态方法newJob()和TriggerBuilder类的静态方法newTrigger()。
重要的静态导入:

import static org.quartz.JobBuilder.*;
import static org.quartz.SimpleScheduleBuilder.*;
import static org.quartz.CronScheduleBuilder.*;
import static org.quartz.CalendarIntervalScheduleBuilder.*;
import static org.quartz.TriggerBuilder.*;
import static org.quartz.DateBuilder.*;

Job && Triggers

一个Job是一个实现了Job接口的类。
Job接口只有一个方法:

public interface Job {
    void execute(JobExecutionContext var1) throws JobExecutionException;
}

当这个Job的trigger启动了, execute(..) 方法就会被某个工作线程唤醒。
JobExecutionContext这个对象,携带job实例的运行时的环境信息传递给该方法,这些信息包括执行这个job的Scheduler信息、Trigger信息、JobDetail信息以及一些其他信息。
当Job被添加到scheduler后,JobDetail对象就创建了。JobDetail包含Job的许多属性设置,看作为一个JobDataMap,即存储了Job实例的信息。
Trigger对象用于触发job的执行。常用的类型有SimpleTrigger和CronTrigger。
SimpleTrigger:执行一次,重复n次
CronTrigger:基于日历执行

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值