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

本文介绍了一个基于Java的定时任务管理器实现,该管理器利用Servlet生命周期进行任务的启动与停止,通过Timer调度每月备份数据库表一次,并具备防止任务重复执行的功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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("上一次任务执行还未结束..."); //上一次任务执行还未结束 

  } 

 } 

}

 

<listener>

  <listener-class>***.TaskManager</listener-class>

  <description>要定期执行的任务</description>
</listener>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值