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>

浙公网安备 33010602011771号