package s.simple; import org.quartz.*; import java.text.SimpleDateFormat; import java.util.Date; /** * @Title: HelloJob * @ProjectName quartz * @date 2019/6/2513:52 * 实现任务逻辑的接口Job */ public class HelloJob implements Job { private String testParam; public void setTestParam(String testParam) { this.testParam = testParam; } @Override public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException { Date date = new Date(); SimpleDateFormat sfd = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String format = sfd.format(date); System.out.println("当前系统时间: "+ format); // 值获取2种方式 // 1.获取jobDetailMap 和 TriggerDataMap JobDataMap jobDataMap = jobExecutionContext.getTrigger().getJobDataMap(); JobDataMap jobDataMap1 = jobExecutionContext.getJobDetail().getJobDataMap(); // 合并后的Map Trgger会覆盖Detail中的key JobDataMap mergedJobDataMap = jobExecutionContext.getMergedJobDataMap(); String message1 = mergedJobDataMap.getString("message"); // 2.传值方式也可以通过属性方式,需要定义set方法 System.out.println(testParam); // 获取开始和结束时间 Trigger trigger = jobExecutionContext.getTrigger(); Date startTime = trigger.getStartTime(); String s_time = sfd.format(startTime); System.out.println("开始时间:"+startTime); Date endTime = trigger.getEndTime(); System.out.println("结束时间:"+sfd.format(endTime)); } }
Scheduler
package s.simple; import org.quartz.*; import org.quartz.impl.StdSchedulerFactory; import java.text.SimpleDateFormat; import java.util.Date; /** * @Title: HelloScheduler * @ProjectName quartz * @date 2019/6/2513:58 */ public class HelloScheduler { public static void main(String[] args) { JobDataMap jobDataMap = new JobDataMap(); jobDataMap.put("testParam","JobDetail"); JobDataMap jobDataMap2 = new JobDataMap(); jobDataMap2.put("message","Trigger"); // 打印当前时间 Date date = new Date(); Date date2 = new Date(); Date endDate = new Date(); SimpleDateFormat sfd = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String format = sfd.format(date); System.out.println("current exec time is "+ format); date.setTime(date.getTime()+3000); // 当前时间3秒 date2.setTime(date2.getTime()+4000); // 当前时间4秒 endDate.setTime(endDate.getTime()+6000); // 当前时间6秒后停止 // 创建jobDetail 并绑定helloJob JobDetail jobDetail = JobBuilder.newJob(HelloJob.class).withIdentity("myJob", "group1").usingJobData(jobDataMap).build(); /** * Trigger作用是执行Job,告诉调度程序什么时候触发 * 创建Trigger 立即执行,并每隔2秒执行,重复永远 Trigger trigger = TriggerBuilder.newTrigger().withIdentity("myTrigger", "group1") .usingJobData(jobDataMap2) .startAt(date).endAt(endDate) // 开始时间和结束时间 .withSchedule(SimpleScheduleBuilder .simpleSchedule() .withIntervalInSeconds(2) .repeatForever()) .build(); */ /** * SimpleTrigger * 距离当前时间4秒后首次执行,之后每两秒重复执行一次 SimpleTrigger trigger = TriggerBuilder .newTrigger() .withIdentity("myTrigger", "group1") .usingJobData(jobDataMap2) .startAt(date2) // 4秒后开始时间 .withSchedule(SimpleScheduleBuilder .simpleSchedule() .withIntervalInSeconds(2) // 重复间隔 .withRepeatCount(SimpleTrigger.REPEAT_INDEFINITELY)) // 重复次数 .build(); */ /** * CronTrigger 使用 * 1. (* * * * * ? *) 每秒触发一次 * 2. (* 15 10 ? * * 2017) 2017年每天10.15触发一次 */ CronTrigger trigger = TriggerBuilder .newTrigger() .withIdentity("myTrigger", "group1") .usingJobData(jobDataMap2) .withSchedule(CronScheduleBuilder.cronSchedule("* * * * * ? *")) .build(); // 创建Scheduler示例 SchedulerFactory schedulerFactory = new StdSchedulerFactory(); try { Scheduler scheduler = schedulerFactory.getScheduler(); scheduler.scheduleJob(jobDetail, trigger); scheduler.start(); } catch (SchedulerException e) { e.printStackTrace(); } } }