java web 定时任务, 4个步骤即可

第一步:

 1 package com.msqsoft.app.queuing.util;
 2 
 3 import java.util.Calendar;
 4 import java.util.Date;
 5 import java.util.Timer;
 6 
 7 public class TimerManager {
 8     // 时间间隔, 调试阶段,设定 10 秒
 9     private static final long PERIOD_DAY = 10 * 1000;
10 
11     public TimerManager() {
12         Calendar calendar = Calendar.getInstance();
13         
14         // 设置启动时间 24小时制
15         calendar.set(Calendar.HOUR_OF_DAY, 11); //
16         calendar.set(Calendar.MINUTE, 18); //
17         calendar.set(Calendar.SECOND, 0);//
18 
19         Date date = calendar.getTime(); // 第一次执行定时任务的时间
20         System.out.println(date);
21         System.out.println("before 方法比较:" + date.before(new Date()));
22         // 如果第一次执行定时任务的时间 小于 当前的时间
23         // 此时要在 第一次执行定时任务的时间 加一天,以便此任务在下个时间点执行。如果不加一天,任务会立即执行。循环执行的周期则以当前时间为准
24         if (date.before(new Date())) {
25             date = this.addDay(date, 1);
26             System.out.println(date);
27         }
28 
29         Timer timer = new Timer();
30 
31         NFDFlightDataTimerTask task = new NFDFlightDataTimerTask();
32         // 安排指定的任务在指定的时间开始进行重复的固定延迟执行。
33         timer.schedule(task, date, PERIOD_DAY);
34     }
35 
36     // 增加或减少天数
37     public Date addDay(Date date, int num) {
38         Calendar startDT = Calendar.getInstance();
39         startDT.setTime(date);
40         startDT.add(Calendar.DAY_OF_MONTH, num);
41         return startDT.getTime();
42     }
43 }

第二步:

 1 package com.msqsoft.app.queuing.util;
 2 
 3 import java.text.SimpleDateFormat;
 4 import java.util.Calendar;
 5 import java.util.TimerTask;
 6 
 7 public class NFDFlightDataTimerTask extends TimerTask {
 8     private static SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
 9 
10     @Override
11     public void run() {
12         try {
13             // 在这里写你要执行的内容
14             System.out.println("执行当前时间" + formatter.format(Calendar.getInstance().getTime()));
15         } catch (Exception e) {
16             System.out.println("-------------解析信息发生异常--------------");
17         }
18     }
19 
20 }

第三步:

 1 package com.msqsoft.app.queuing.util;
 2 
 3 import javax.servlet.ServletContextEvent;
 4 import javax.servlet.ServletContextListener;
 5 
 6 public class NFDFlightDataTaskListener implements ServletContextListener {
 7 
 8     @Override
 9     public void contextInitialized(ServletContextEvent sce) {
10         new TimerManager();
11     }
12 
13     @Override
14     public void contextDestroyed(ServletContextEvent sce) {
15         // TODO Auto-generated method stub
16     }
17 }

 

第四步:
配置web.xml文件
1 <!--NFDFlightDataTaskListener 监听器-->
2     <listener>
3         <listener-class>com.msqsoft.app.queuing.util.NFDFlightDataTaskListener</listener-class>
4     </listener>

 



 

 

posted @ 2017-05-22 11:36  26个字符的地狱  阅读(135)  评论(0)    收藏  举报