jsp(web)定时器,Java定时器在Web中的应用

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

jsp(web)定时器,Java定时器在Web中的应用这个类最终功能是每天某个时间点(如每晚22点)执行某一功能。首先,介绍java定时器(java.util.Timer)有定时执行计划任务的功能,通过设定定时器的间隔时间,会自动在此间隔时间后执行预先安排好的任务(java.util.TimerTask)如:每隔一个小时执行任务timer.schedule(TimerTask,0,60*60*1000)。schedule方法的第一个参数是需要执行的任务,此类的类型为java.util.TimerTask,第二个参数为执行任务前等待时间,此处0表示不等待,第三个参数为间隔时间,单位为毫秒。由于我们希望当Web工程启动时,定时器能自动开始计时,这样在整个Web工程的生命期里,就会定时的执行任务,因此启动定时器的类不能是一般的类,此处用Servlet的监听器类来启动定时器,通过在配置文件里配置此监听器,让其在工程启动时自动加载运行,存活期为整个Web工程生命期。要使用此监听器需要在web.xml中配置,如下:1.listener2.listener-classcom.demo.timer.ContextListener/listener-class3./listener要运用Servlet侦听器需要实现javax.servlet.ServletContextListener接口,以下是类设计:监听器的内容1.packagecom.demo.timer;2.3.importjavax.servlet.ServletContextEvent;4.importjavax.servlet.ServletContextListener;5.6./**7.*监听器的内容8.*/9.publicclassContextListenerimplementsServletContextListener{10.privatestaticfinallongserialVersionUID=1L;11.12.publicContextListener(){13.}14.15.privatejava.util.Timertimer=null;16.17.publicvoidcontextInitialized(ServletContextEventevent){18.19./**20.*设置一个定时器21.*/22.timer=newjava.util.Timer(true);23.24.event.getServletContext().log(定时器已启动);25.26./**27.*定时器到指定的时间时,执行某个操作(如某个类,或方法)28.*/29.//后边最后一个参数代表监视器的监视周期,现在为一小时30.timer.schedule(newMyTask(event.getServletContext()),0,60*60*1000);31.32.event.getServletContext().log(已经添加任务调度表);33.}34.35.publicvoidcontextDestroyed(ServletContextEventevent){36.timer.cancel();37.System.out.println(定时器销毁);38.event.getServletContext().log(定时器销毁);39.}40.41.}定时器任务1.packagecom.demo.timer;2.3.importjava.util.Calendar;4.importjava.util.TimerTask;5.6.importjavax.servlet.ServletContext;7.8./**9.*继承定时器任务类10.*11.*/12.publicclassMyTaskextendsTimerTask{13.14.publicMyTask(){15.super();16.}17.18./**这个代表3点钟的时候执行任务*/19.privatestaticfinalintC_SCHEDULE_HOUR=3;20.21.privatestaticbooleanisRunning=false;22.23.privateServletContextcontext=null;24.25.publicMyTask(ServletContextcontext){26.this.context=context;27.}28.29.publicvoidrun(){30.Calendarcal=Calendar.getInstance();31.if(!isRunning){32.if(C_SCHEDULE_HOUR==cal.get(Calendar.HOUR_OF_DAY)){33.isRunning=true;34.context.log(开始执行指定任务);35.36./**37.*此处写执行任务代码38.*/39.//newYouCode().changeState();40.41.isRunning=false;42.context.log(指定任务执行结束);43.}44.}else{45.context.log(上一次任务执行还未结束);46.}47.}48.49.}

1 / 3
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功