定时任务工具——CronUtil
定时任务工具——CronUtil
路小磊 发表于3年前
定时任务工具——CronUtil
  • 发表于 3年前
  • 阅读 982
  • 收藏 40
  • 点赞 0
  • 评论 6

腾讯云 技术升级10大核心产品年终让利>>>   

摘要: Java中定时任务使用的最多的我想就是quartz了,但是这个框架太过庞大,而且我也不需要用到这么多东西,使用方法也是比较复杂(官方Demo我实在是无语……)。于是我便寻找新的框架代替(不要问我为啥不自己写……)

牢骚

Java中定时任务使用的最多的我想就是quartz了,但是这个框架太过庞大,而且我也不需要用到这么多东西,使用方法也是比较复杂(官方Demo我实在是无语……)。于是我便寻找新的框架代替(不要问我为啥不自己写……)。用过Linux的crontab的人都知道,使用其定时的表达式可以非常灵活的定义定时任务的时间以及频率(Linux的crontab精确到分,而quaeta的精确到秒,不过对我来说精确到分已经够用了,精确到秒的可以使用Timer可以搞定),然后就是crontab的那个迷人的配置文件,可以把定时任务很清晰的罗列出来,这个我也是比较喜欢的。(记得当时Spring整合quartz的时候那XML看的我眼都花了……)。于是我便找到了一个轻量调度框架——cron4j

封装

为了隐藏这个框架里面的东西,我对其做了封装,所谓封装,就是把任务调度放在一个配置文件里,然后启动即可(与Linux的crontab非常像)。

配置文件

对于Maven项目,首先在src/main/resources/config下放入cron4j.setting文件(默认是这个路径的这个文件),然后在文件中放入定时规则,规则如下:

#我是注释
[com.company.aaa.job]
TestJob = */10 * * * *
TestJob2 = */10 * * * *

中括号里面表示包名,第二行等号前面是要执行的定时任务类名,等号后面是定时表达式。

关于定时任务表达式,它与Linux的crontab表达式一模一样,具体请看这里: http://www.cnblogs.com/peida/archive/2013/01/08/2850483.html

中括号以下都是使用这个包的,直到遇到下一个包名,以上配置等同于:

com.company.aaa.job.TestJob = */10 * * * *
com.company.aaa.job.TestJob2 = */10 * * * *

TestJob是一个实现了Runnable接口的类,在start()方法里就可以加逻辑代码了。

启动

调用CronUtil.start()既可启动定时任务服务,CrontabUtil.stop()关闭服务。

其他方法

当然,如果你想动态的添加定时任务,使用CronUtil.schedule(String schedulingPattern, Runnable task)方法即可(使用此方法加入的定时任务不会被写入到配置文件)。

我的项目地址:

标签: Java Hutool
共有 人打赏支持
路小磊
粉丝 219
博文 51
码字总数 37380
作品 5
评论 (6)
台俊峰
不错,顶一个。quartz的api设计的确实非常难用。
sgsoft
不错
路小磊

引用来自“台俊峰”的评论

不错,顶一个。quartz的api设计的确实非常难用。
确实cron4j这个框架不错,可以看看~
路小磊

引用来自“sgsoft”的评论

不错
谢谢~
chencliff
这个,和ScheduledExecutorService有什么功能上的不同?
chencliff
抱歉,看了官网,明白了,上面那个问题请无视它
×
路小磊
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: