Quartz研究报告
Quartz是一个开源的任务调度框架。
1. 任务定义
继承Job接口,实现Job的execute方法。
代码示例:
import org.quartz.Job; import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException;
/** * @author livingbody * */ public class Myjob implements Job {
public void execute(JobExecutionContext arg0) throws JobExecutionException { System.out .println("=================================hello, just job test"); }
}
|
2. 运行任务
创建任务后比如来运行它,运行的时候类似于线程,必须给主线程一定的休眠时间,好让任务在此期间运行完毕。
代码示例:
import java.util.Date;
import org.quartz.JobDetail; import org.quartz.Scheduler; import org.quartz.SchedulerException; import org.quartz.SchedulerFactory; import org.quartz.SimpleTrigger; import org.quartz.TriggerUtils; import org.quartz.impl.StdSchedulerFactory;
public class JobRun {
public void run() throws SchedulerException, InterruptedException { SchedulerFactory sf = new StdSchedulerFactory(); Scheduler sched = sf.getScheduler(); //获取scheduler引用 Date runTime = TriggerUtils.getEvenMinuteDate(new Date()); //获取触发时间(下个整秒) JobDetail job = new JobDetail("job1", "group1", Myjob.class); SimpleTrigger trigger = new SimpleTrigger("trigger1", "group1", runTime); sched.scheduleJob(job, trigger); sched.start(); Thread.sleep(90L * 1000L); sched.shutdown(true);
}
} |
注:
Scheduler是一个管理计划任务的接口。并且通过注册JobDetail和Trigger,可以自动启动或人工启动job。
JobDetail用来描述一个工作实例的属性。一般包含job的name,以及所属的group,以及对应的jobClass。
TriggerUtils是用来构造Trigger的一个常用类。有好多构造方法,用来构造Trigger。
SimpleTrigger是一个具体的Trigger在给定的时间或间隔用来启动JobDetail实例。
3. Trigger
CronTrigger用来创建有规律的触发器。它有自己的表达式。
1 | 2 | 3 | 4 | 5 | 6 | 7 |
秒 | 分钟 | 小时 |
|
|
| 年 |
0 | 0 | 12 | * | * | ?每天 |
|
|
|
|
|
|
|
|
|