web程序定时器

 1 package com.timer;
 2 
 3 import java.util.Calendar;
 4 import java.util.Date;
 5 import java.util.Timer;
 6 
 7 import javax.servlet.ServletContext;
 8 
 9 /**
10  * Created on 2013-8-13
11  * Title: J2EE程序_[定时任务管理器]_[公共类]
12  * Description: [定时器]
13  * Copyright: xuqb (c) 2013
14  * Company: xuqb工作室
15  * 
16  * @developer xuqb[155282323@qq.com]
17  * @version 1.0
18  */
19 public class TimerManager {
20     /**
21      * Description:[时间间隔,每天执行次数(每五秒执行一次)]
22      * Value:PERIOD_DAY
23      */
24     private static final long PERIOD_DAY = 5 * 1000;
25 
26     /**
27      * Description:[构造方法]
28      * @constructor 方法.
29      */
30     public TimerManager(ServletContext event) {
31         // --获取配置文件中的时间
32         String commitCount = "0:0";
33         
34         String[] objtime = null;
35         // 拆分从配置文件预设的小时和分钟;若没有,则默认零时零分执行(24小时制)
36         if (commitCount != null && !"".equals(commitCount)) {
37             objtime = commitCount.split(":");
38         } else {
39             objtime = new String[2];
40             objtime[0] = "0"; // 零时(24小时制)
41             objtime[1] = "0"; // 零分(24小时制)
42         }
43         int beginHour = Integer.parseInt(objtime[0]); // 开始执行小时(24小时制)
44         int beginMimu = Integer.parseInt(objtime[1]); // 开始执行分钟(24小时制)
45         Calendar calendar = Calendar.getInstance();
46         /*** 定制每日某时:某分执行方法(24小时制) ***/
47         calendar.set(Calendar.HOUR_OF_DAY, beginHour); // 开始执行小时(24小时制)
48         calendar.set(Calendar.MINUTE, beginMimu); // 开始执行分钟(24小时制)
49         calendar.set(Calendar.SECOND, 0); // 开始执行秒(24小时制)
50         Date date = calendar.getTime(); // 第一次执行定时任务的时间
51         // 如果第一次执行定时任务的时间 小于 当前的时间
52         // 此时要在 第一次执行定时任务的时间 加一天,以便此任务在下个时间点执行。如果不加一天,任务会立即执行。
53         if (date.before(new Date())) {
54             date = this.addDay(date, 0); // 0代表增加0天
55         }
56         Timer timer = new Timer();
57         NFDFlightDataTimerTask task = new NFDFlightDataTimerTask(event);
58         // 安排指定的任务在指定的时间开始进行重复的固定延迟执行。
59         timer.schedule(task, date, PERIOD_DAY);
60     }
61 
62     /**
63      * Created on 2013-8-13
64      * Description: [增加或减少天数]
65      * 
66      * @param date
67      * @param num
68      * @return
69      * @developer: xuqb[155282323@qq.com]
70      * @update: [日期YYYY-MM-DD][更改人姓名][E-mail]
71      */
72     public Date addDay(Date date, int num) {
73         Calendar startDT = Calendar.getInstance();
74         startDT.setTime(date);
75         startDT.add(Calendar.DAY_OF_MONTH, num);
76         return startDT.getTime();
77     }
78 }
 1 package com.timer;
 2 
 3 import java.util.TimerTask;
 4 
 5 import javax.servlet.ServletContext;
 6 
 7 
 8 /**
 9  * Created on 2013-8-13
10  * Title: JavaWeb程序_[定时任务管理器]_[引用类]
11  * Description: [配合定时器引入具体业务实现类]
12  * Copyright: xuqb (c) 2013
13  * Company: xuqb工作室
14  * @developer xuqb[155282323@qq.com]
15  * @version 1.0
16  */
17 public class NFDFlightDataTimerTask extends TimerTask {
18     
19     private ServletContext context = null;
20     
21     public NFDFlightDataTimerTask(ServletContext context){
22         this.context =  context;
23     }
24     
25     
26     /**
27      * Created on 2013-8-13
28      * Description: [方法功能中文描述]
29      * 
30      * @developer: xuqb[155282323@qq.com]
31      * @update: [日期YYYY-MM-DD][更改人姓名][E-mail]
32      */
33     public void run() {
34         try {
35             
36             int num = (int)(1+Math.random()*(10-1+1));
37             System.out.println(num);
38             context.setAttribute("bull", num);
39             
40             System.out.println(context.getAttribute("bull"));
41             // 在这里写你要执行的内容
42             System.out.println("这里编辑您的业务方法");
43         } catch (Exception emz) {
44             System.out.println("解析信息发生异常");
45             emz.printStackTrace();
46         }
47     }
48 }
 1 package com.timer;
 2 
 3 import javax.servlet.ServletContext;
 4 import javax.servlet.ServletContextEvent;
 5 import javax.servlet.ServletContextListener;
 6 
 7 /**
 8  * Created on 2013-8-13
 9  * Title: JavaWeb程序_[模块名称]_[说明]
10  * Description: [描述该类概要功能介绍]
11  * Copyright: xuqb (c) 2013
12  * Company: xuqb工作室
13  * 
14  * @developer xuqb[155282323@qq.com]
15  * @version 1.0
16  */
17 public class NFDFlightDataTaskListener implements ServletContextListener {
18     
19     private ServletContext context = null;
20     
21     /**
22      * Created on 2013-8-13
23      * Description: [方法功能中文描述]
24      * 
25      * @developer: xuqb[155282323@qq.com]
26      * @update: [日期YYYY-MM-DD][更改人姓名][E-mail]
27      */         
28     public void contextInitialized(ServletContextEvent event) {
29         this.context = event.getServletContext();
30         new TimerManager(context);
31     }
32 
33     /**
34      * Created on 2013-8-13
35      * Description: [方法功能中文描述]
36      * 
37      * @developer: xuqb[155282323@qq.com]
38      * @update: [日期YYYY-MM-DD][更改人姓名][E-mail]
39      */
40     public void contextDestroyed(ServletContextEvent event) {
41     }
42 }

web.xml 插入如下代码

1    <!-- begin 定时任务管理器 -->  
2   <listener>  
3       <listener-class>com.timer.NFDFlightDataTaskListener</listener-class>  
4   </listener>   
5   <!-- end 定时任务管理器-->  
原文地址:https://www.cnblogs.com/zfy0098/p/5500814.html