Java定时任务2:Jcrontab介绍

初学Jcrontab感觉非常好,用它来做一个定时程序非常容易,而且方便。有关Jcrontab的介绍和它的定时文件的格式,下面会介绍,这里先来讲解一下它在程序中的具体应用。在这里,我们先约定数据源这个概念,“数据源”(我暂且这样称呼),它主要是用来由Jcrontab按照定时规则要处理的类和程序,可以是多个,也可以是一个,我按照Jcrontab提供的方法通常是将它写到普通文件,XML文件或数据库中。这样,按照Jcrontab的规则,提供给Jcrontab这些数据源就可以使用Jcrotab的定时功能了。

根据Jcrontab存储的不同的数据源,我们可以分成以下几个:

  • 普通文件来存储
  • 数据库存储
  • XML文件存储

下面先介绍一下有关Jcrontab用到的配置文件:

  • jcrontab.properties配置文件,这是用来启动Jcrontab的必需文件。在Jcrontab的发布包中已经有一个完整格式的jcrontab.properties文件了,里面有它的样例,我们只需要根据我们自己的应用需要,来使用具体的配置属性,来构造自己的jcrontab.properties。
  • 还有一个配置文件就是我们自己的xml定时配置文件。(若我们采用的数据源是普通文件的话)这个文件是用来写负责处理的定时程序的,里面按照规定好的规则来处理规定好的类或类的方法。
  • 若我们采用数据库存储数据源的话,那么,我们就需要配置一个数据库的信息,在jcrontab.properties文件中已经有一个例子了,我们可以改成我们需要的数据库配置信息,这个很容易。
  • 若要采用的是XML形式的文件,那么我们要指定数据源是XML的,同时指定处理XML的解析器,这里用的是Apache的Xerces。
  • 在程序中随时可以添加数据源,通过Crontab中的newTask方法,就可以随时添加。

习惯使用 unix/linux 的开发人员应该对 crontab 都不陌生。Crontab 是一个非常方便的用于 unix/linux 系统的任务调度命令。JCronTab 则是一款完全按照 crontab 语法编写的 java 任务调度工具。

首先简单介绍一下 crontab 的语法,主要由六个字段组成(括弧中标识了每个字段的取值范围):

 Minutes (0-59)
 Hours   (0-23) 
 Day-of-Month (1-31)
 Month    (1-12/JAN-DEC) 
 Day-of-Week  (0-6/SUN-SAT)
 Command 

举例如下:

每天 12 点到 15 点 , 每隔 1 小时执行一次 Date 命令:

 0 12-15/1 * * * Date 

每月 2 号凌晨 1 点发一封信给 zhjingbj@cn.ibm.com:

 0 1 2 * * mail -s “good” zhjingbj@cn.ibm.com 

每周一,周二,周三,周六的晚上 20:00 到 23:00,每半小时打印“normal”:

 0/30 20-23 * * MON-WED,SAT echo “normal”

JCronTab 借鉴了 crontab 的语法,其区别在于 command 不再是 unix/linux 的命令,而是一个 Java 类。如果该类带参数,例如“com.ibm.scheduler.JCronTask2#run”,则定期执行 run 方法;如果该类不带参数,则默认执行 main 方法。此外,还可以传参数给 main 方法或者构造函数,例如“com.ibm.scheduler.JCronTask2#run Hello World“表示传两个参数 Hello 和 World 给构造函数。

JCronTab 的优点。

第一,支持多种任务调度的持久化方法,包括普通文件、数据库以及 XML 文件进行持久化;

第二,JCronTab 能够非常方便地与 Web 应用服务器相结合,任务调度可以随 Web 应用服务器的启动自动启动;

第三,JCronTab 还内置了发邮件功能,可以将任务执行结果方便地发送给需要被通知的人。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值