当Timer不能解决问题了,这时我们就得撸Quartz了
第一个Quartz程序
在项目开发时,当做完一段业务代码后,以为基本可以收工了,这时回头再看,由于某些业务中的数据具有时效性,在指定时间时我们得进行相应的操作。这时首先我们可以使用Timer来做定时,但是Timer是串行,遇到多并发
的时候它就显得蛋疼了,由此我们引入了Quartz来干活咯!
干活前先做个小的测试
1.TestJob.java
public class TestJob 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("TestJob 当前时间为:"+sdf.format(date));
//
System.out.println("todo:此处执行具体业务逻辑");
}
}
2.TestScheduler.java
public class TestScheduler {
public static void main(String[] args) throws SchedulerException {
//创建JobDetail实例 ,与TestJob绑定
JobDetail jobDetail = JobBuilder.newJob(TestJob.class).withIdentity("test-job", "test-group").build();
//创建Trigger实例,定义该job立即执行
Trigger trigger = TriggerBuilder.newTrigger().withIdentity("test-trigger", "test-group").
startNow().withSchedule(SimpleScheduleBuilder.
simpleSchedule().withIntervalInSeconds(2).repeatForever())
.build();
//创建Scheduler实例
SchedulerFactory factory=new StdSchedulerFactory();
Scheduler scheduler=factory.getScheduler();
scheduler.start();
Date date=new Date();
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println("TestScheduler - 当前时间为:"+sdf.format(date));
scheduler.scheduleJob(jobDetail,trigger);
}
执行结果
TestScheduler - 当前时间为:2019-03-07 10:37:52
TestJob 当前时间为:2019-03-07 10:37:52
todo:此处执行具体业务逻辑
TestJob 当前时间为:2019-03-07 10:37:54
todo:此处执行具体业务逻辑
TestJob 当前时间为:2019-03-07 10:37:56
todo:此处执行具体业务逻辑
TestJob 当前时间为:2019-03-07 10:37:58
todo:此处执行具体业务逻辑
TestJob 当前时间为:2019-03-07 10:38:00
todo:此处执行具体业务逻辑