查看: 7071|回复: 0
打印 上一主题 下一主题

Web应用下实现定时任务的简便方法

[复制链接]
跳转到指定楼层
1#
发表于 2007-10-8 15:47:50 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
台州网址导航
在WEB应用下实现定时任务的简便方法

  在web方式下,如果我们要实现定期执行某些任务的话,除了用quartz等第三方开源工具外,我们可以使用Timer和TimeTask来完成指定的定时任务:

  第一步:创建一个任务管理类,实现ServletContextListener 接口

public class TaskManager implements ServletContextListener {
/**
  * 每天的毫秒数
  */
public static final long PERIOD_DAY = DateUtils.MILLIS_IN_DAY;
/**
  * 一周内的毫秒数
  */
public static final long PERIOD_WEEK = PERIOD_DAY * 7;
/**
  * 无延迟
  */
public static final long NO_DELAY = 0;
/**
  * 定时器
  */
private Timer timer;
/**
  * 在Web应用启动时初始化任务
  */
public void contextInitialized(ServletContextEvent event) {
        //定义定时器
  timer = new Timer("数据库表备份",true);
  //启动备份任务,每月(4个星期)执行一次
  timer.schedule(new BackUpTableTask(),NO_DELAY, PERIOD_WEEK * 4);
//  timer.schedule(new BackUpTableTask(),NO_DELAY, 30000);
}
/**
  * 在Web应用结束时停止任务
  */
public void contextDestroyed(ServletContextEvent event) {
  timer.cancel(); // 定时器销毁
}
}
  第二步:创建一个时间任务类

public class BackUpTableTask extends TimerTask {
private static Log log = LogFactory.getLog(BackUpTableTask.class);
private static boolean isRunning = false;
public void run() {
  if (!isRunning) {
   isRunning = true;
   log.debug("开始执行任务..."); //开始任务
   //working  add what you want to do
   log.debug("执行任务完成..."); //任务完成
   isRunning = false;
  } else {
   log.debug("上一次任务执行还未结束..."); //上一次任务执行还未结束
  }
}
}
  第三步:在web中添加一个监听器

<listener>
  <listener-class>***.TaskManager</listener-class>
  <description>要定期执行的任务</description>
</listener>
  那么在web服务器启动的时候,任务也被启动,并且会周期性的执行
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 转播转播 分享分享 分享淘帖
台州维博网络(www.tzweb.com)专门运用PHP+MYSQL/ASP.NET+MSSQL技术开发网站门户平台系统等。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

网站推广
关于我们
  • 台州朗动科技(Tzweb.com)拥有多年开发网站平台系统门户手机客户端等业务的成功经验。主要从事:政企网站,系统平台,微信公众号,各类小程序,手机APP客户端,浙里办微应用,浙政钉微应用、主机域名、虚拟空间、后期维护等服务,满足不同企业公司的需求,是台州地区领先的网络技术服务商!

Hi,扫描关注我

Copyright © 2005-2026 站长论坛 All rights reserved

Powered by 站长论坛 with TZWEB Update Techonolgy Support

快速回复 返回顶部 返回列表