版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/sinat_23490433/article/details/89173048
1、什么是Quartz?
Quartz是一个完全由java编写的开源作业调度框架。
2、Quartz是用来做什么的?
Quartz是一个任务调度框架,比如你会遇到如下问题:
1)、每月25号,信用卡自动还款
2)、每天早上7:30闹钟
这些问题总结起来就是:在某一个有规律的时间点干某件事情,并且时间的触发条件可以非常复杂(比如每月最后一个工作日的17:50),复杂到需要一个专门的框架来干这件事。而quartz就是干这件事的,我们可以给它一个触发条件的定义,它负责到了时间点,触发相应的job起来干活。
3、Quartz入门示例
要求每隔2秒钟,打印hello world!
第一步、新建maven工程,结构如下图:
第二步、在pom.xml中导入所需要的jar包,如下:
<dependencies>
<!-- https://mvnrepository.com/artifact/org.quartz-scheduler/quartz -->
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
<version>2.2.1</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
</dependencies>
第三步、HelloJob代码如下:
package com.cn.quartz;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import java.text.SimpleDateFormat;
import java.util.Date;
/**
* 实现Job类,重写execute()方法
* */
public class HelloJob implements Job {
@Override
public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
//打印当前执行的时间
Date date=new Date();
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println("当前时间:"+sdf.format(date));
//编写具体的业务逻辑
System.out.println("hello world!");
}
}
第四步、HelloScheduler代码如下:
package com.cn.quartz;
import org.quartz.*;
import org.quartz.impl.StdSchedulerFactory;
import java.text.SimpleDateFormat;
import java.util.Date;
/**
* 作业调度器
* */
public class HelloScheduler {
public static void main(String[] args) throws SchedulerException {
//创建一个JobDetail实例,将该实例与HelloJob绑定
JobDetail jobDetail= JobBuilder.newJob(HelloJob.class).withIdentity("myJob","group1").build();
//创建一个Trigger实例,定义该job立即执行,并且每隔2秒钟重复执行一次
Trigger trigger= TriggerBuilder.newTrigger().withIdentity("myTrigger","group1").startNow()
.withSchedule(SimpleScheduleBuilder.simpleSchedule().withIntervalInSeconds(2).repeatForever()).build();
//创建Schedule实例
SchedulerFactory schedulerFactory=new StdSchedulerFactory();
Scheduler scheduler=schedulerFactory.getScheduler();
scheduler.start();
Date date=new Date();
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-mm-dd HH:mm:ss");
System.out.println("当前时间:"+sdf.format(date));
scheduler.scheduleJob(jobDetail,trigger);
}
}
第五步、测试
运行main方法,结果如下图: