文档章节

定时任务工具——CronUtil

路小磊
 路小磊
发布于 2015/02/24 11:38
字数 668
阅读 1261
收藏 43
点赞 0
评论 6

牢骚

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

我的项目地址:

© 著作权归作者所有

共有 人打赏支持
路小磊

路小磊

粉丝 272
博文 53
码字总数 39918
作品 5
乌海
程序员
加载中

评论(6)

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

引用来自“sgsoft”的评论

不错
谢谢~
路小磊
路小磊

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

不错,顶一个。quartz的api设计的确实非常难用。
确实cron4j这个框架不错,可以看看~
sgsoft
sgsoft
不错
台俊峰
台俊峰
不错,顶一个。quartz的api设计的确实非常难用。
Windows 定时删除指定路径下N天前的日志文件

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

122269875 ⋅ 04/09 ⋅ 0

Windows自动删除n天前的文件的批处理脚本

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

itzhongxin ⋅ 2017/07/03 ⋅ 0

#研发中间件介绍#定时任务调度与管理JobCenter

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

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

#研发中间件介绍#定时任务调度与管理JobCenter

关键词:定时任务、调度、监控报警、Job、crontab、Java 本文档适用人员:研发员工 没有JobCenter时我们要面对的: 电商业务链条很长,业务逻辑也较为复杂,需要成百上千种定时任务。窝窝的大...

郭恩洲_OSC博客 ⋅ 2015/02/26 ⋅ 0

树莓派——Cron和Crontab(定时任务)

树莓派——Cron和Crontab(定时任务) Cron是Unix系统的一个配置定期任务的工具,用于定期或者以一定的时间间隔执行一些命令或者脚本;可执行的任务范围可以是每天夜里自动备份用户的home文件...

捍卫机密 ⋅ 2016/11/06 ⋅ 0

MySQL事件调度器(Event Scheduler)介绍

一、介绍 事件调度器是在 MySQL 5.1 中新增的另一个特色功能,可以作为定时任务调度器,取代部分原先只能用操作系统任务调度器才能完成的定时功能。而且 MySQL 的事件调度器可以实现每秒钟执...

Amamatthew ⋅ 2014/09/26 ⋅ 0

Java SSM框架制作定时任务

服务器总是需要定时处理一些事情,如果单纯依靠数据库的定时任务也不太靠谱,所以就想到了在代码层进行定时执行,查了一下,还真有,所以转发一下大神的代码,亲测有效,原文地址: https://...

她叫我小渝 ⋅ 05/26 ⋅ 0

windows下tomcat自动重启

项目有潜在内存泄漏问题,临时的解决办法就是每过一段时间自动重启。共六个步骤,熟练的话5分钟以内搞定。 1.调整端口号,防止冲突——特别是部署多个tomcat服务的情况 修改server.xml的默认...

itwriter ⋅ 2016/08/31 ⋅ 0

Linux系统调优

关闭selinux ##setenforce 1 设置SELinux 成为enforcing模式 2.运行级别 设定运行级别为3: runlevel #查询当前运行级别 cat /etc/inittab 查看运行级别配置文件(修改配置文件即可) init 3...

chjunfox ⋅ 2017/02/22 ⋅ 0

oracle 定时循环执行sql语句--使用dbms_job包

一、dbmsjob涉及到的知识点 1、创建job: variable jobno number; dbmsjob.submit(:jobno, —-job号 'yourprocedure;',—-执行的存储过程, ';'不能省略 nextdate, —-下次执行时间 'interva...

图ttt ⋅ 2017/08/31 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Redis 单线程 为何却需要事务处理并发问题

Redis是单线程处理,也就是命令会顺序执行。那么为什么会存在并发问题呢? 个人理解是,虽然redis是单线程,但是可以同时有多个客户端访问,每个客户端会有 一个线程。客户端访问之间存在竞争...

码代码的小司机 ⋅ 49分钟前 ⋅ 0

到底会改名吗?微软GVFS 改名之争

微软去年透露了 Git Virtual File System(GVFS)项目,GVFS 是 Git 版本控制系统的一个开源插件,允许 Git 处理 TB 规模的代码库,比如 270 GB 的 Windows 代码库。该项目公布之初就引发了争...

linux-tao ⋅ 59分钟前 ⋅ 0

笔试题之Java基础部分【简】【二】

1.静态变量和实例变量的区别 在语法定义上的区别:静态变量前要加static关键字,而实例变量前则不加。在程序运行时的区别:实例变量属于某个对象的属性,必须创建了实例对象,其中的实例变...

anlve ⋅ 今天 ⋅ 0

Lombok简单介绍及使用

官网 通过简单注解来精简代码达到消除冗长代码的目的 优点 提高编程效率 使代码更简洁 消除冗长代码 避免修改字段名字时忘记修改方法名 4.idea中安装lombnok pom.xml引入 <dependency> <grou...

to_ln ⋅ 今天 ⋅ 0

【转】JS浮点数运算Bug的解决办法

37.5*5.5=206.08 (JS算出来是这样的一个结果,我四舍五入取两位小数) 我先怀疑是四舍五入的问题,就直接用JS算了一个结果为:206.08499999999998 怎么会这样,两个只有一位小数的数字相乘,怎...

NickSoki ⋅ 今天 ⋅ 0

table eg

user_id user_name full_name 1 zhangsan 张三 2 lisi 李四 `` ™ [========] 2018-06-18 09:42:06 星期一½ gdsgagagagdsgasgagadsgdasgagsa...

qwfys ⋅ 今天 ⋅ 0

一个有趣的Java问题

先来看看源码: public class TestDemo { public static void main(String[] args) { Integer a = 10; Integer b = 20; swap(a, b); System.out......

linxyz ⋅ 今天 ⋅ 0

十五周二次课

十五周二次课 17.1mysql主从介绍 17.2准备工作 17.3配置主 17.4配置从 17.5测试主从同步 17.1mysql主从介绍 MySQL主从介绍 MySQL主从又叫做Replication、AB复制。简单讲就是A和B两台机器做主...

河图再现 ⋅ 今天 ⋅ 0

docker安装snmp rrdtool环境

以Ubuntu16:04作为基础版本 docker pull ubuntu:16.04 启动一个容器 docker run -d -i -t --name flow_mete ubuntu:16.04 bash 进入容器 docker exec -it flow_mete bash cd ~ 安装基本软件 ......

messud4312 ⋅ 今天 ⋅ 0

OSChina 周一乱弹 —— 快别开心了,你还没有女友呢。

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @莱布妮子 :分享吴彤的单曲《好春光》 《好春光》- 吴彤 手机党少年们想听歌,请使劲儿戳(这里) @clouddyy :小萝莉街上乱跑,误把我认错成...

小小编辑 ⋅ 今天 ⋅ 9

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部