Java定时器

在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;
	}
	
	@Override
	public 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>



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值