Java Web定时器使用(转载)

Java Web定时器使用(转载)

ID:38581329

大小:117.50 KB

页数:18页

时间:2019-06-15

Java Web定时器使用(转载)_第1页
Java Web定时器使用(转载)_第2页
Java Web定时器使用(转载)_第3页
Java Web定时器使用(转载)_第4页
Java Web定时器使用(转载)_第5页
资源描述:

《Java Web定时器使用(转载)》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、这个类最终功能是每天某个时间点(如每晚22点)执行某一功能.首先介绍java定时器(java.util.Timer)有定时执行计划任务的功能,通过设定定时器的间隔时间,会自动在此间隔时间后执行预先安排好的任务(java.util.TimerTask)如:每隔一个小时执行任务timer.schedule(TimerTask,0,60*60*1000);schedule方法的第一个参数是需要执行的任务,此类的类型为java.util.TimerTask,第二个参数为执行任务前等待时间,此处0表示不等待,第三个参数为间隔时间,单位为毫秒由于我们希望当Web工程启动时,

2、定时器能自动开始计时,这样在整个Web工程的生命期里,就会定时的执行任务,因此启动定时器的类不能是一般的类,此处用Servlet的监听器类来启动定时器,通过在配置文件里配置此监听器,让其在工程启动时自动加载运行,存活期为整个Web工程生命期.要运用Servlet侦听器需要实现javax.servlet.ServletContextListener接口,以下是类设计:publicclassTimerListenerimplementsServletContextListener{privateTimertimer=null;privateSampleTasksam

3、pleTask;@OverridepublicvoidcontextDestroyed(ServletContextEventevent){timer.cancel();event.getServletContext().log("定时器销毁");}@OverridepublicvoidcontextInitialized(ServletContextEventevent){timer=newTimer(true);sampleTask=newSampleTask(event.getServletContext());event.getServletContex

4、t().log("定时器已启动");timer.schedule(sampleTask,0,60*60*1000);event.getServletContext().log("已经添加任务调度表");}}publicclassSampleTaskextendsTimerTask{privateServletContextcontext;privatestaticbooleanisRunning=false;privatestaticbooleanflag=true;privatestaticfinalintC_SCHEDULE_HOUR=15;publicSa

5、mpleTask(ServletContextcontext){this.context=context;}@Overridepublicvoidrun(){Calendarcal=Calendar.getInstance();if(!isRunning){if(C_SCHEDULE_HOUR==cal.get(Calendar.HOUR_OF_DAY)&&flag){isRunning=true;context.log("开始执行指定任务");//需要执行的代码isRunning=false;flag=false;context.log("指定任务执行结束")

6、;}}else{context.log("上一次任务执行还未结束");}if(C_SCHEDULE_HOUR!=cal.get(Calendar.HOUR_OF_DAY)){flag=true;}}}要使用此监听器需要在web.xml中配置,如下:  包路径.TimerListener这样在web工程启动时,就会自动启动此监听器.JAVA中Timer定时器调度方法javatimer中的时间调度方法主要有:schedule(TimerTasktask,Dat

7、efirstTime,longperiod)         Schedulesthespecifiedtaskforrepeatedfixed-delayexecution,beginningatthespecifiedtime.但是如果此时的firstTime小于(时间落后于)当前时间,那么task会立即执行,在调试的时候不方便,因为程序一启动就开始执行了,或许还没有到任务的触发点。schedule(TimerTasktask,longdelay,longperiod)         Schedulesthespecifiedtaskforrepeated

8、fixed-delaye

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。