0
点赞
收藏
分享

微信扫一扫

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




http://dev.yesky.com/355/3407855.shtml

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

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

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


1. 以下是引用片段:    
2. public class TaskManager implements ServletContextListener {    
3.  /**   
4.   * 每天的毫秒数   
5.   */   
6.  public static final long PERIOD_DAY = DateUtils.MILLIS_IN_DAY;    
7.  /**   
8.   * 一周内的毫秒数   
9.   */   
10.  public static final long PERIOD_WEEK = PERIOD_DAY * 7;    
11.  /**   
12.   * 无延迟   
13.   */   
14.  public static final long NO_DELAY = 0;    
15.  /**   
16.   * 定时器   
17.   */   
18.  private Timer timer;    
19.  /**   
20.   * 在Web应用启动时初始化任务   
21.   */   
22.  public void contextInitialized(ServletContextEvent event) {    
23.         //定义定时器    
24.   timer = new Timer("数据库表备份",true);     
25.   //启动备份任务,每月(4个星期)执行一次    
26.   timer.schedule(new BackUpTableTask(),NO_DELAY, PERIOD_WEEK * 4);    
27. //  timer.schedule(new BackUpTableTask(),NO_DELAY, 30000);    
28.  }    
29.  /**   
30.   * 在Web应用结束时停止任务   
31.   */   
32.  public void contextDestroyed(ServletContextEvent event) {    
33.   timer.cancel(); // 定时器销毁    
34.  }    
35. }






java 代码


1. 以下是引用片段:    
2. public class BackUpTableTask extends TimerTask {     
3.         private static Log log = LogFactory.getLog(BackUpTableTask.class);     
4.         private static boolean isRunning = false;     
5.        public void run() {     
6.                   if (!isRunning) {     
7.                               isRunning = true;     
8.                                log.debug("开始执行任务..."); //开始任务     
9.                                   //working  add what you want to do     
10.                               log.debug("执行任务完成..."); //任务完成     
11.                               isRunning = false;     
12.                     } else {     
13.                              log.debug("上一次任务执行还未结束..."); //上一次任务执行还未结束     
14.                     }     
15.        }     
16. }



  第三步:在web中添加一个监听器


xml 代码






以下是引用片段:     <listener>     <listener-class>***.TaskManager</listener-class>     <description>要定期执行的任务</description>    </listener>  




  那么在web服务器启动的时候,任务也被启动,并且会周期性的执行

第二步:创建一个时间任务类


java 代码

举报

相关推荐

0 条评论