`
t225com
  • 浏览: 661565 次
文章分类
社区版块
存档分类
最新评论

JAVA中使用Timer,TimerTask轮循数据库,执行定时任务

 
阅读更多

众所周知,Quartz是一个开源的作业调度框架,它完全由Java写成,并设计用于J2SE和J2EE应用中。它提供了巨大的灵 活性而不牺牲简单性。你能够用它来为执行一个作业而创建简单的或复杂的调度。如何做一个复杂的定时作业使用quartz是个不错的选择。不过,小任务就大材小用了。土豆我今天在这里讲解的就是直接使用JDK自带的Timer,TimerTask来进行简单的定时作业。

首先,说一下哪些场合要使用到定时作业呢。比如那些要实时处理的数据,以及一些需要统计的数据,尤其是一些大的数据统计,通常的做法就是做一个定时任务,在深夜时进行查询统计,将查询的结果放到一个统计的小表中,然后将查询出的结果显示出来。这样就减轻的服务器的压力。因为白天查询大型数据的话,无疑是浪费时间,资源,而且会出现一些问题。晚上服务器的负担则相对小很多很多。

好了不多说,贴代码。

先定义一个Servlet。因为Servlet可以在WEB启动时立即启动。仅需简单的配置即可。


上面代码就是在servlet初始化时启动SendQueryTimer,使用timer的schedule来完成定时任务。在destroy中我们可以看到timer的cancle()方法可以停止timer。最后schedule看它的英文单词就可以知道,计划,调度的意思。

查看JDK的源码:

我们可以看到这个方法第一个参数是一个任务,第二个参数是任务作业的开始时间,第三个很显然是相隔的时间段period[即后一次任务作业距离上一次任务作业的时间 ]。它的单位是毫秒。源码中很明显说:如果小于等于0会报错。

下面我们来看看WEM.XML中配置这个servlet。

看这个intervalTime其它没必要看了 ,你们懂的。intervalTime是配置这个period的时间段的。60就是60毫秒。如果我配置一分钟呢,那就是60*1000;

好,下面我们看TimerTask中怎么具体执行一个任务呢。

OK,接下来看这个SendQueryTimer中的代码。

必须得继承TimerTask执行,实现它的run方法,在run方法中启动线程执行任务。

//在这个线程中我们可以写上自己的业务代码,实现具体业务。当然你可以根据你的查询结果进行相应操作。


使用Timer,TimerTask做一个定时任务,变得简单明了。

OK,打完睡觉。

本文链接:点击打开链接


分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics