参考博客:
http://www.cnblogs.com/shenliang123/p/3231312.html 几种任务调度Java实现与比较
http://blog.csdn.net/jijijiujiu123/article/details/9086847 网站同事写的(chenrui)
http://blog.csdn.net/maskice/article/details/1670070进阶版
初学Jcrontab感觉非常好,用它来做一个定时程序非常容易,而且方便。有关Jcrontab的介绍和它的定时文件的格式,下面会介绍,这里先来讲解一下它在程序中的具体应用。在这里,我们先约定数据源这个概念,“数据源”(我暂且这样称呼),它主要是用来由Jcrontab按照定时规则要处理的类和程序,可以是多个,也可以是一个,我按照Jcrontab提供的方法通常是将它写到普通文件,XML文件或数据库中。这样,按照Jcrontab的规则,提供给Jcrontab这些数据源就可以使用Jcrotab的定时功能了。
根据Jcrontab存储的不同的数据源,我们可以分成以下几个:
下面先介绍一下有关Jcrontab用到的配置文件:
1.首先要下载JCrontab的相关jar包,Jcrontab-2.0-RC0.jar。
2.在web.xml文件中配置JCrontab
LoadOnStartupServlet
org.jcrontab.web.loadCrontabServlet
PROPERTIES_FILE
D:/Workspaces/TimerAndCron/config/crontab/jcrontab.properties
200
LoadOnStartupServlet
/Startup
3.jcrontab.properties文件
#指定crontab文件的位置
org.jcrontab.data.file = D:/Workspaces/TimerAndCron/config/crontab/crontab
#配置持久化文件为org.jcrontab.data.FileSource,也就是普通文件
org.jcrontab.data.datasource = org.jcrontab.data.FileSource
org.jcrontab.Crontab.refreshFrequency = 3
org.jcrontab.log.Logger=org.jcrontab.log.Log4JLogger
org.jcrontab.log.log4J.Properties=D:/Workspaces/TimerAndCron/config/log4j.properties
4.crontab文件(描述了任务的调度安排)
# Tasks planification configuration file.
# IMPORTANT: All the index begin in 0, except day of month and
# month that begin in 1.
# minute 0-59
# hour 0-23
# day of month 1-31
# month 1-12
# day of week 0-6 (0 is Sunday)
#每两分钟执行一次 CrontabMainTest1的 main方法
*/2 * * * * com.kang.timerandcron.cron.process.CrontabMainTest#main Hello World
#每一分钟执行一次 CrontabRunTest1的 run方法,并传入参数Hello World
* * * * * com.kang.timerandcron.cron.process.CrontabRunTest#run Hello World
5.定时任务CrontabMainTest和CrontabRunTest的代码
public class CrontabMainTest {
public static void main(String[] args) {
System.out.println(new Date());
System.out.print("调用main方法 ");
if (args.length > 0 && args != null) {
for (String str : args) {
System.out.print(str + " ");
}
System.out.println();
}
}
}
/**
* 需要实现Runnable接口,可以接收参数
* @author kang
*
*/
public class CrontabRunTest implements Runnable {
private String[] args;
public CrontabRunTest(String[] args) {
this.args = args;
}
public void run() {
System.out.println(new Date());
System.out.print("调用run方法 ");
if (args.length > 0 && args != null) {
for (String str : args) {
System.out.print(str + " ");
}
System.out.println();
}
}
}
1.导入相关的jar包:Jcrontab-2.0-RC0.jar,xerces.jar
2.和上面“普通文件持久化”的2 相同
3.Jcrontab.properties文件
#指定xml配置文件的地址(绝对路径)
org.jcrontab.data.file=D:/Workspaces/TimerAndCron/config/crontab/crontab.xml
#配置xml解析器
org.xml.sax.driver=org.apache.xerces.parsers.SAXParser
#指定持久化文件为xml文件
org.jcrontab.data.datasource=org.jcrontab.data.XMLSource
4.crontab.xml配置文件(描述了任务的调度安排)
10,20,30,40,50
*
*
*
*
*
*
true
com.kang.timerandcron.cron.process.CrontabRunTest
run
hello world
0
52
10
*
*
*
*
true
com.kang.timerandcron.cron.process.CrontabMainTest
main
hello world
5.和上面“普通文件持久化”的5 相同
通过数据库存储数据源一般各个项目都会自己实现,下篇文章中再给大家介绍