Quartz介绍:
Quartz是一个作业调度库,可以与几乎任何其他软件系统集成或一起使用。简而言之,job scheduler是一个服务组件,负责在预定(计划)时间到来时执行(或通知)其他软件组件。
Quartz作为一个包含所有核心Quartz功能的小型java库(.jar文件)进行分发。 此功能的主要接口(API)是Scheduler接口, 它提供简单的操作,例如调度/非调度作业,启动/停止/暂停调度程序。
准备工作:
1. 下载Quartz
2. 阅读Readme.txt,了解每个jar包的作用,将quartz.jar包和lib/下的几个jar包、以及相关依赖的jar包放在工程的classpath中
示例演示:
import java.util.Date;
import static org.quartz.JobBuilder.*;
import static org.quartz.TriggerBuilder.*;
import static org.quartz.SimpleScheduleBuilder.*;
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.SchedulerFactory;
import org.quartz.SimpleTrigger;
import org.quartz.impl.StdSchedulerFactory;
public class HelloQuartzScheduling {
public static void main(String[] args)throws SchedulerException
{
SchedulerFactory schedulerFactory = new StdSchedulerFactory();
Scheduler scheduler = schedulerFactory.getScheduler();
JobDetail jobDetail = newJob(HelloQuartzJob.class)
.withIdentity("helloQuartzJob", Scheduler.DEFAULT_GROUP)
.build();
//指定时间触发,每隔10秒执行一次,重复10次:
SimpleTrigger simpleTrigger = (SimpleTrigger) newTrigger()
.withIdentity("simpleTrigger", Scheduler.DEFAULT_GROUP)
.startAt(new Date(System.currentTimeMillis()))
.withSchedule(simpleSchedule().withIntervalInSeconds(10)
.withRepeatCount(10)) //设置重复10次,实际触发11次
.forJob("helloQuartzJob")
.build();
scheduler.scheduleJob(jobDetail, simpleTrigger);
scheduler.start();
}
}
import java.util.Date;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
public class HelloQuartzJob implements Job{
public void execute(JobExecutionContext context)
throws JobExecutionException {
System.out.println("Hello, Quartz! - executing its JOB at "+ new Date());
}
}
HelloQuartzJob是一个实现了Job接口的类,Job接口只包含一个excute方法。触发Job的Trigger时,excute()方法会被scheduler的一个工作线程所调用。excute()方法的JobExecutionContext对象中保存着该Job运行时的部分信息、执行Job的scheduler的引用、触发Job的trigger的引用以及JobDetail对象的引用。
原文链接:https://blog.csdn.net/x41990/article/details/82905801