一 基础概念
1.什么是Quartz?
Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目,完全由Java开发,可以用来执行定时任务,类似于 java.util.Timer。但是相较于Timer, Quartz增加了很多功能:
(1).持久性作业 - 就是保持调度定时的状态;
(2).作业管理 - 对调度作业进行有效的管理;
2.Quartz 框架的几个核心概念
(1)Job
相当于我们需要执行的任务,一般我们的业务逻辑就放到job里面。
(2)Trigger
当我们创建好Job后,还需要一个触发器对象去执行Job任务。触发器可以执行Job的执行时间,执行周期,运行次数等等。
(3)Schedule
当有了任务和 触发器后,需要有一个对象来将两者结合起来,来控制Trigger去执行对应的job,这个时候就要引入Schedule 对象。
上面三个部分就是Quartz的基本组成部分:
- 调度器:Scheduler
- 任务:JobDetail
- 触发器:Trigger,包括SimpleTrigger和CronTrigger
二 实现代码如下
引入pom文件
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
<version>2.3.0</version>
</dependency>
1.首先需要定义一个job,执行我们的业务逻辑
public class QuartzInterface implements Job {
@Override
public void execute (JobExecutionContext jobExecutionContext) throws JobExecutionException {
System.out.println ("当前时间为:" + new SimpleDateFormat ("yyy-MM-dd HH:mm:ss").format (new Date ()));
System.out.println (jobExecutionContext);
}
}
2.创建一个main函数,来构建 我们的 job 对象, trigger 对象, schedule 对象
public class QuartzSchedule {
public static void main (String[] args) throws SchedulerException, InterruptedException {
//创建schedule 对象
Scheduler scheduler = new StdSchedulerFactory ().getScheduler ();
//创建JobBuilder 对象
JobDetail jobBuild = JobBuilder.newJob (QuartzInterface.class).withIdentity ("job1", "group1").build ();
//创建Trigger 对象
SimpleTrigger simpleTrigger = TriggerBuilder.newTrigger ().withIdentity ("trigger1", "triggerGroup1").startNow ()
.withSchedule (SimpleScheduleBuilder.simpleSchedule ()
.withIntervalInHours (1)
.repeatForever ()
).build ();
scheduler.scheduleJob (jobBuild, simpleTrigger);
System.out.println ("schedule begin");
scheduler.start ();
TimeUnit.MINUTES.sleep (1);
System.out.println ("schedule end");
}
}