Quartz2定时任务动态 重新安排 ,暂停 ,恢复,重启 , 删除 ,重新添加

定时任务执行类:

/**
 * 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);

 

 

 

 

 

转载于:https://my.oschina.net/LucasZhu/blog/1557772

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值