文档章节

定时任务工具——CronUtil

路小磊
 路小磊
发布于 2015/02/24 11:38
字数 668
阅读 5.1K
收藏 44

3 月,跳不动了?>>>

牢骚

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)方法即可(使用此方法加入的定时任务不会被写入到配置文件)。

我的项目地址:

© 著作权归作者所有

路小磊

路小磊

粉丝 448
博文 55
码字总数 42397
作品 5
呼和浩特
程序员
私信 提问
加载中

评论(6)

chencliff
chencliff
抱歉,看了官网,明白了,上面那个问题请无视它
chencliff
chencliff
这个,和ScheduledExecutorService有什么功能上的不同?
路小磊
路小磊 博主

引用来自“sgsoft”的评论

不错
谢谢~
路小磊
路小磊 博主

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

不错,顶一个。quartz的api设计的确实非常难用。
确实cron4j这个框架不错,可以看看~
sgsoft
sgsoft
不错
台俊峰
台俊峰
不错,顶一个。quartz的api设计的确实非常难用。
实战 | SpringBoot实现定时任务的动态增删启停

  20大进阶架构专题每日送达       作者:jessehua www.jianshu.com/p/0f68936393fd   在spring boot项目中,可以通过@EnableScheduling注解和@Scheduled注解实现定时任务,也可以通...

java进阶架构师
02/25
0
0
Windows 定时删除指定路径下N天前的日志文件

Windows 下bat脚本文件的内容为 1. 删除指定路径下5天前的所有文件 . @echo offset SrcDir=E:WORKGitset DaysAgo=5forfiles /p %SrcDir% /s /m ./d -%DaysAgo% /c "cmd /c del /f /q /a @pat......

122269875
2018/06/29
0
0
Windows自动删除n天前的文件的批处理脚本

数据库每天备份文件,然而只需要保留七天的备份即可,编写一个批处理脚本文件自动删除七天前的文件并设置定时任务 自动删除文件需要用到forfiles命令 forfiles参数: /p 指定的路径 /s 包括子...

itzhongxin
2017/07/03
0
0
Prometheus

前言 需求分析 后端数据结构设计 后端分布式设计 前后端分离设计 架构图 部署图(支持docker) 技术选型 参与构建 前言 Auto deploy online, fuck operations engineer… 需求分析 支持nodej...

ComeOnTom
2015/02/08
21
0
#研发中间件介绍#定时任务调度与管理JobCenter

郑昀 最后更新于2014/11/11 关键词: 定时任务 、调度、监控报警、Job、crontab、Java 本文档适用人员:研发员工 没有JobCenter时我们要面对的: 电商业务链条很长,业务逻辑也较为复杂,需要...

旁观者-郑昀
2015/01/04
876
1

没有更多内容

加载失败,请刷新页面

加载更多

华为P40发布:搭载HMS硬刚谷歌,未涨价抢全球高端机市场

  文连线 Insight,作者向阳,编辑水笙   3 月 26 日晚,华为消费者业务 CEO 余承东登上台,以熟悉的英文口音开启了华为发布会,他说,“这就是我们的 P40 系列。”   以往华为P系列通...

水果黄瓜
7分钟前
8
0
如何从Java中的字符串值获取枚举值? - How to get an enum value from a string value in Java?

问题: Say I have an enum which is just 说我有一个枚举 public enum Blah { A, B, C, D} and I would like to find the enum value of a string, for example "A" which would be B......

javail
30分钟前
5
0
2048游戏的最佳算法是什么? - What is the optimal algorithm for the game 2048?

问题: I have recently stumbled upon the game 2048 . 我最近偶然发现了2048游戏。 You merge similar tiles by moving them in any of the four directions to make "bigger" tiles. 您可......

技术盛宴
今天
7
0
OSChina 周一乱弹 —— 小姐姐,这tm不是犬耳娘吗!你认错了吧

Osc乱弹歌单(2020)请戳(这里) 【今日歌曲】 @薛定谔的兄弟 :分享洛神有语创建的歌单「我喜欢的音乐」: 《Drip Drip Drip》- 音乐治疗 手机党少年们想听歌,请使劲儿戳(这里) @-Eric- ...

小小编辑
今天
34
0
HTML5 小游戏开发

HTML的基础 HTML称为超文本标记语言,是一种标识性的语言。它包括一系列标签.通过这些标签可以将网络上的文档格式统一,使分散的Internet资源连接为一个逻辑整体。HTML文本是由HTML命令组成...

冯六六
今天
17
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部