版权声明:标明出处自由转载 https://blog.csdn.net/qq_36226997/article/details/91448105
目录
1.Quartz介绍及Quartz的使用思路
1.1 Quartz介绍
Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目,它可以与J2EE与J2SE应用程序相结合也可以单独使用。Quartz可以用来创建简单或为运行十个,百个,甚至是好几万个Jobs这样复杂的程序。Jobs可以做成标准的Java组件或 EJBs。Quartz的最新版本为Quartz 2.3.0。----百度百科
1.2 Quartz的使用思路
1.job - 任务 - 要做什么事情
2.trigger - 触发器 - 什么时候做
3.scheduler - 任务调度 - 什么时候做什么事情
2.Quartz的基本使用方式
1.引入pom依赖
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
<version>2.2.1</version>
</dependency>
2.创建类
2.1 创建Job类实现Job接口并重写方法
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import java.util.Date;
/**
* 定时任务类
*/
public class QuartzDemo implements Job {
/**
* 任务被触发时所执行的方法
* @param context
* @throws JobExecutionException
*/
@Override
public void execute(JobExecutionContext context) throws JobExecutionException {
System.out.println("QuartzDemo.execute"+new Date());
}
}
2.2 测试代码
第一种时间参数
import org.quartz.*;
import org.quartz.impl.StdSchedulerFactory;
public class QuartzMain {
public static void main(String[] args) throws SchedulerException {
//1.创建Job对象
JobDetail job = JobBuilder.newJob(QuartzDemo.class).build();
/**
* withSchedule方法中的参数为触发的时间:
* 1.简单的trigger触发时间:通过Quartz提供一个方法来完成简单的重复调用
* 2.cron Trigger(cron表达式):按照cron的表达式来给定触发的时间
*/
//2.创建Trigger对象
Trigger trigger = TriggerBuilder.newTrigger().withSchedule(SimpleScheduleBuilder.repeatSecondlyForever()).build();
//3.创建Scheduler对象
Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();
scheduler.scheduleJob(job,trigger);
//启动
scheduler.start();
}
}
第二种时间参数
import org.quartz.*;
import org.quartz.impl.StdSchedulerFactory;
public class QuartzMain {
public static void main(String[] args) throws SchedulerException {
//1.创建Job对象
JobDetail job = JobBuilder.newJob(QuartzDemo.class).build();
/**
* withSchedule方法中的参数为触发的时间:
* 1.简单的trigger触发时间:通过Quartz提供一个方法来完成简单的重复调用
* 2.cron Trigger(cron表达式):按照cron的表达式来给定触发的时间
*/
//2.创建Trigger对象
Trigger trigger = TriggerBuilder.newTrigger().withSchedule(CronScheduleBuilder.cronSchedule("0/1 * * * * ?")).build();
//3.创建Scheduler对象
Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();
scheduler.scheduleJob(job,trigger);
//启动
scheduler.start();
}
}
每秒执行一次
控制台输出
QuartzDemo.executeTue Jun 11 16:39:15 CST 2019
QuartzDemo.executeTue Jun 11 16:39:16 CST 2019
QuartzDemo.executeTue Jun 11 16:39:17 CST 2019
QuartzDemo.executeTue Jun 11 16:39:18 CST 2019
QuartzDemo.executeTue Jun 11 16:39:19 CST 2019