Java定时器

来源:互联网 发布:gcc stl源码 编辑:程序博客网 时间:2024/06/06 00:58

在Web工程中实现定时器

因为在项目启动时,定时器就要启动计时,并在规定的时间内触发相应的任务,所以定时器的生命期就是整个项目的生命期,那么最好的方式就是使用监听器了,项目启动后,就会在整个项目的生命周期中处于监听状态。

现在来实现一个简单的定时器

首先编写一个监听器TimerListener

import java.util.Timer;import javax.servlet.ServletContextEvent;import javax.servlet.ServletContextListener;import javax.servlet.http.HttpServlet;/** *  * @author Administrator * */public class TimerListener extends HttpServlet implements ServletContextListener {private static final long serialVersionUID = 1L;private Timer timer = null;public TimerListener() {}/* * 销毁 * @see javax.servlet.ServletContextListener#contextDestroyed(javax.servlet.ServletContextEvent) */public void contextDestroyed(ServletContextEvent event) {this.timer.cancel();event.getServletContext().log("定时器销毁");}/* * 初始启动 * @see javax.servlet.ServletContextListener#contextInitialized(javax.servlet.ServletContextEvent) */public void contextInitialized(ServletContextEvent event) {this.timer = new Timer();event.getServletContext().log("定时器启动");//参数1指MyTimerTask()需要调动执行的任务,参数2为无延迟,参数3为每小时触发一次this.timer.schedule(new MyTimerTask(),  0, 60*60*1000 );event.getServletContext().log("定时器任务启动");}}

完成监听器的编写后,接下来实现定时器的编写,定时器中执行的任务就不写了,只是打印一行符合吧

import java.util.TimerTask;import javax.servlet.ServletContext;/** *  * @author Administrator * */public class MyTimerTask extends TimerTask {private ServletContext servletContext = null;private static boolean isRunning = false;public MyTimerTask(){}public MyTimerTask(ServletContext servletContext){this.servletContext = servletContext;}@Overridepublic void run() {if(!isRunning){isRunning = true;servletContext.log("开始执行定时任务");//执行相应任务System.out.println("------------------->");servletContext.log("定时任务执行完成");isRunning = false;}else{servletContext.log("上传定时任务为完成");}}}

OK,完成,最后记得再配置文件中添加监听器

 <listener>  <listener-class>packagename.TimerListener</listener-class> </listener>



0 0