spring 定时器

来源:互联网 发布:基本面分析软件 编辑:程序博客网 时间:2024/06/04 23:35

对应用中的调度任务应该有3种:基于cron的;固定间隔的(Fixed Interval);固定延时的(Fixed Delay)。

1. 基于cron

这比较容易理解,只需要给出一个cron的表达式,就可以根据表达式去执行。比如

"0 0 12 ? * WED" 代表"每周三的12:00”

它的几个部分分别代表:秒、分、小时、基于月的天;月;基于周的天;年(可选)

如果你使用Quartz,可以参考Cron Trigger一章 。

 

2. 固定间隔的

这个也很常用,比如每天执行一次,每小时执行一次。在Quartz中,有对应的SimpleTrigger ,可以指定开始结束时间和重复间隔,比如:new SimpleTrigger("trigger name", "group name", startDate, endDate, repeatCount, repeatInterval)

 

3. 固定延时的

固定延时是指当前Job结束后,过固定的时间再执行下一次任务。


理解如下代码,不管定时任务执行了多久,都不会漏查,总有时间重叠

private LocalDateTime timeStamp = LocalDateTime.now();// spring自带的定时任务@Scheduled(fixedDelay = 30000)public void Executor() {LocalDateTime now = LocalDateTime.now().minusMinutes(5);try {pubQuestBasic.sendMessage(timeStamp, now);pubBookmark.sendMessage(timeStamp, now);timeStamp = now.minusMinutes(5);} catch (Exception e) {}}


0 0
原创粉丝点击