quartz指定时分秒开始,每隔35秒执行一次

实现在2018-03-24 14:58:5 每间隔35秒执行一次任务,我第一次这么些的:5/35 58/1 14/1 24 3 ? 2018

执行结果

    (1)[c.p.w.j.MdCountPersonCopyJob]:34 - Sat Mar 24 14:58:05 CST 2018云鹊医典 在线人数

    (2)[c.p.w.j.MdCountPersonCopyJob]:34 - Sat Mar 24 14:58:40 CST 2018云鹊医典 在线人数

    (3)[c.p.w.j.MdCountPersonCopyJob]:34 - Sat Mar 24 14:59:05 CST 2018云鹊医典 在线人数

    (4)[c.p.w.j.MdCountPersonCopyJob]:34 - Sat Mar 24 14:59:40 CST 2018云鹊医典 在线人数

    (5)后续没有结果了

由(1)和(2)  秒的对比,(3)和(4)秒的对比,得出分钟变化时,秒被重置。

由(4)和(5)对别得知小时变化时,分钟被重置,也就是说(5)位置下一次触发时间为:5/15 58 15 24 3 ? 2018


所以为了实现这个功能,需要2个定时任务。

(1)3 58 14 24 3 ? 2018  注意此时提前了2秒,(可以提前任意秒)

(2)再由(1)触发,5/15 * * 24 3 ? 2018 ,结合着2个定时任务,就可以实现 2018-03-24 14:58:5 每间隔35秒执行一次任务

要实现每隔 30 执行一次任务,并且满足条件后停止任务,可以使用 JobDetail 和 CronTrigger。首先,定义一个 JobDetail,它描述了要执行的任务和任务的属性。然后,创建一个 CronTrigger,它描述了触发器的属性,包括触发时间和重复次数。最后,在任务执行时检查条件是否满足,如果满足就停止任务。 下面是一个示例代码,假设要每隔 30 执行一次任务,并且在任务执行了 5 次后停止: ``` // 创建 JobDetail JobDetail jobDetail = JobBuilder.newJob(MyJob.class) .withIdentity("job1", "group1") .build(); // 创建 CronTrigger CronTrigger trigger = TriggerBuilder.newTrigger() .withIdentity("trigger1", "group1") .withSchedule(CronScheduleBuilder.cronSchedule("0/30 * * * * ?")) .build(); // 在任务执行时检查条件是否满足,如果满足就停止任务 int count = 0; while (count < 5) { // 执行任务 jobDetail.getJobClass().newInstance().execute(null); // 检查条件是否满足 if (conditionSatisfied()) { break; } // 增加计数器 count++; // 暂停 30 钟 Thread.sleep(30 * 1000); } // 停止任务 scheduler.deleteJob(jobDetail.getKey()); ``` 在上面的代码中,MyJob 是要执行的任务类,它需要实现 org.quartz.Job 接口。CronScheduleBuilder.cronSchedule 方法定了触发器的触发时间,这里使用了 "0/30 * * * * ?" 表示每隔 30 执行一次。然后,在任务执行时检查条件是否满足,如果满足就跳出循环并停止任务。最后,通过 Scheduler 的 deleteJob 方法删除任务。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值