SimpleTrigger简介
Trigger 就是触发器的意思,用来指定什么时间开始触发,触发多少次,每隔多久触发一次.
SimpleTrigger 可以方便的实现一系列的触发机制。
需要注意的地方:每执行一个任务都要开一个线程,需要考虑有没有这个必要,要注意:无限制的使用必然耗尽亏空
场景例子:创建一个新线程后,10 秒后运行,还有其他场景点击底部链接
使用方法:
DateBuilder.futureDate()
可以方便的获取10秒后, 5分钟后, 3个小时候,2个月后这样的时间
import org.quartz.*;
import org.quartz.impl.StdSchedulerFactory;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Component;
import java.util.Date;
import static org.quartz.JobBuilder.newJob;
import static org.quartz.TriggerBuilder.newTrigger;
/**
* 描述:
* @author selfimpr626
* @version 1.0.0.20190128
* @since JDK V1.8
*/
@Component
public class MessageQuartz extends Thread {
@Override
public void run() {
//线程的执行体
Scheduler scheduler = null;
try {
scheduler = StdSchedulerFactory.getDefaultScheduler();
Date startTime = DateBuilder.futureDate(10, DateBuilder.IntervalUnit.SECOND);
JobDetail job = newJob(MessageJob.class).withIdentity("messageJob", "messageGroup").build();
SimpleTrigger trigger = (SimpleTrigger) newTrigger().withIdentity("trigger1", "group1").startAt(startTime).build();
// schedule it to run!
Date ft = scheduler.scheduleJob(job, trigger);
System.out.println("当前时间是:" + new Date().toLocaleString());
System.out.printf("%s 这个任务会在 %s 准时开始运行,累计运行%d次,间隔时间是%d毫秒%n", job.getKey(), ft.toLocaleString(), trigger.getRepeatCount()+1, trigger.getRepeatInterval());
scheduler.start();
//等待20秒,让前面的任务都执行完了之后,再关闭调度器
Thread.sleep(20000);
scheduler.shutdown(true);
} catch (SchedulerException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
// @Async
// public void startQuartz() throws Exception{
//
// }
}
import org.quartz.Job;
import org.quartz.JobDetail;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* 描述:
* @author selfimpr626
* @version 1.0.0.20190128
* @since JDK V1.8
*/
public class MessageJob implements Job {
@Override
public void execute(JobExecutionContext context) throws JobExecutionException {
JobDetail detail = context.getJobDetail();
String message = detail.getJobDataMap().getString("message");
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
String now = sdf.format(new Date());
System.out.printf("给短信地址 %s 发出了一封定时短信, 当前时间是: %s%n" ,message, now);
}
}
参考来源于:
http://how2j.cn/k/quartz/quartz-simpletrigger/1709.html#nowhere