定时任务执行类:
/**
* Created with IntelliJ IDEA.
* Description:
* User: zhubo
* Date: 2017-10-24
* Time: 15:33
*/
@DisallowConcurrentExecution
public class SimpleJob implements Job {
@Override
public void execute(JobExecutionContext context) throws JobExecutionException {
// job 的名字
String jobName = context.getJobDetail().getKey().getName();
// 任务执行的时间
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy 年 MM 月 dd 日 HH 时 mm 分 ss 秒");
String jobRunTime = dateFormat.format(Calendar.getInstance().getTime());
// 输出任务执行情况
System.out.println("任务 : " + jobName + " 在 " +jobRunTime + " 执行了 ");
}
}
定时任务重新安排:
public void run() throws Exception{
// 日期格式化
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy 年 MM 月 dd 日 HH 时 mm 分 ss 秒");
SchedulerFactory sf = new StdSchedulerFactory();
Scheduler sched = sf.getScheduler();
System.out.println("--------------- 初始化 -------------------");
//Date startTime = DateBuilder.nextGivenSecondDate(null, 3);
JobDetail job = JobBuilder.newJob(SimpleJob.class).withIdentity("job1", "group1").build();
SimpleTrigger simpleTrigger = TriggerBuilder
.newTrigger()
.withIdentity("trigger1","group1")
.withSchedule(SimpleScheduleBuilder.simpleSchedule().withIntervalInSeconds(5).withRepeatCount(10))
.build();
sched.scheduleJob(job,simpleTrigger);
sched.start();
Thread.sleep(20000);
System.out.println("------- 重新安排 ... --------------------");
CronTrigger cronTrigger = TriggerBuilder
.newTrigger()
.withIdentity("job2","group2")
.withSchedule(CronScheduleBuilder.cronSchedule("0/2 * * * * ?"))
.build();
sched.rescheduleJob(TriggerKey.triggerKey("trigger1","group1"),cronTrigger);
}
--------------- 初始化 -------------------
任务 : job1 在 2017 年 10 月 29 日 10 时 19 分 13 秒 执行了
任务 : job1 在 2017 年 10 月 29 日 10 时 19 分 18 秒 执行了
任务 : job1 在 2017 年 10 月 29 日 10 时 19 分 23 秒 执行了
任务 : job1 在 2017 年 10 月 29 日 10 时 19 分 28 秒 执行了
任务 : job1 在 2017 年 10 月 29 日 10 时 19 分 33 秒 执行了
------- 重新安排 ... --------------------
任务 : job1 在 2017 年 10 月 29 日 10 时 19 分 34 秒 执行了
任务 : job1 在 2017 年 10 月 29 日 10 时 19 分 36 秒 执行了
任务 : job1 在 2017 年 10 月 29 日 10 时 19 分 38 秒 执行了
任务 : job1 在 2017 年 10 月 29 日 10 时 19 分 40 秒 执行了
任务 : job1 在 2017 年 10 月 29 日 10 时 19 分 42 秒 执行了
任务 : job1 在 2017 年 10 月 29 日 10 时 19 分 44 秒 执行了
定时任务暂停:
public void run2() throws Exception{
// 日期格式化
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy 年 MM 月 dd 日 HH 时 mm 分 ss 秒");
SchedulerFactory sf = new StdSchedulerFactory();
Scheduler sched = sf.getScheduler();
System.out.println("--------------- 初始化 -------------------");
JobDetail job = JobBuilder.newJob(SimpleJob.class).withIdentity("job1", "group1").build();
SimpleTrigger simpleTrigger = TriggerBuilder
.newTrigger()
.withIdentity("trigger1","group1")
.withSchedule(SimpleScheduleBuilder.simpleSchedule().withIntervalInSeconds(5).withRepeatCount(10))
.build();
sched.scheduleJob(job,simpleTrigger);
sched.start();
Thread.sleep(20000);
sched.pauseJob(JobKey.jobKey("job1", "group1"));
}
定时任务的暂停与恢复:
public void run3() throws Exception{
// 日期格式化
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy 年 MM 月 dd 日 HH 时 mm 分 ss 秒");
SchedulerFactory sf = new StdSchedulerFactory();
Scheduler sched = sf.getScheduler();
System.out.println("--------------- 初始化 -------------------");
JobDetail job = JobBuilder.newJob(SimpleJob.class).withIdentity("job1", "group1").build();
SimpleTrigger simpleTrigger = TriggerBuilder
.newTrigger()
.withIdentity("trigger1","group1")
.withSchedule(SimpleScheduleBuilder.simpleSchedule().withIntervalInSeconds(5).withRepeatCount(10))
.build();
sched.scheduleJob(job,simpleTrigger);
sched.start();
Thread.sleep(20000);
System.out.println("------- 暂停任务 ... --------------------");
sched.pauseTrigger(TriggerKey.triggerKey("trigger1", "group1"));
Thread.sleep(10000);
System.out.println("------- 恢复任务 ... --------------------");
sched.resumeTrigger(TriggerKey.triggerKey("trigger1", "group1"));
}
定时任务的删除:
sched.deleteJob(jobKey);
定时任务的添加:
System.out.println("------- 重新添加 ... --------------------");
JobDetail jobNew = JobBuilder.newJob(SimpleJob.class).withIdentity("job1", "group1").build();
SimpleTrigger triggerNew = TriggerBuilder.newTrigger()
.withIdentity("trigger1", "group1")
.withSchedule(
SimpleScheduleBuilder.simpleSchedule()
.withIntervalInSeconds(5) // 5秒
.withRepeatCount(20)) // 重复20次
.build();
sched.scheduleJob(jobNew,triggerNew);