1.Quartz可以用来做什么?
- 想每月25号,信用卡自动还款
- 想每年4月1日自己给当年暗恋女神发一封匿名贺卡
- 想每隔1小时,备份一下自己的爱情动作片 学习笔记到云盘
Quartz是一个任务调度框架。比如你遇到这样的问题
这些问题总结起来就是:在某一个有规律的时间点干某件事。并且时间的触发的条件可以非常复杂(比如每月最后一个工作日的17:50),复杂到需要一个专门的框架来干这个事。 Quartz就是来干这样的事,你给它一个触发条件的定义,它负责到了时间点,触发相应的Job起来干活。
2.Quartz的三个核心对象
1. 调度器
2. 任务
3. 触发器
3.一个简单的Demo
创建HelloJob类
创建HelloSchedule类
创建Utils类
public class HelloJob implements Job {
public void execute(JobExecutionContext arg0) throws JobExecutionException {
// 编写具体的业务逻辑
Date date = new Date();
SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println("Hello World "+ " ------>"+Utils.getDate());
}
}
public class HelloSchedule {
public static void main(String[] args) throws SchedulerException {
// 创建一个JobDetail 实例,将该实例与HelloJob。class 绑定
JobDetail jobDetail = JobBuilder.newJob(HelloJob.class)
.withIdentity("myjob", "group1").build();
// 创建一个Trigger实例,定义该Job立即执行,并且每两秒重复执行一次
Trigger trigger = TriggerBuilder
.newTrigger()
.withIdentity("myTrigger", "group1")
.startNow()
.withSchedule(
SimpleScheduleBuilder.simpleSchedule()
.withIntervalInSeconds(3).repeatForever())
.build();
// 创建Schedule 实例
SchedulerFactory sf = new StdSchedulerFactory();
Scheduler scheduler = sf.getScheduler();
scheduler.start();
System.out.println( Utils.getDate());
// 捆绑 jobDetail 和 trgger
scheduler.scheduleJob(jobDetail,trigger);
}
}
public class Utils {
public static String getDate() {
Date date = new Date();
SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
return sf.format(date);
}
}
输出结果: