java 定时器任务模板
程序员文章站
2022-06-21 13:53:24
1.该定时任务是基于web.xml的监听机制 listener 来实现的 建立监听类: 2.web.xml中配置监听配置 3.定时器配置方法: 4.编写定时执行方法 ......
1.该定时任务是基于web.xml的监听机制 listener 来实现的
建立监听类:
NFDFlightDataTaskListener.java
import javax.servlet.ServletContextEvent; import javax.servlet.ServletContextListener; public class NFDFlightDataTaskListener implements ServletContextListener { public void contextInitialized(ServletContextEvent event) { new TimerManager(); //定时器配置方法 } public void contextDestroyed(ServletContextEvent event) { } }
2.web.xml中配置监听配置
<listener> <listener-class> 相对路径.NFDFlightDataTaskListener </listener-class> </listener>
3.定时器配置方法:
TimerManager.java
import java.util.Calendar; import java.util.Date; import java.util.Timer; public class TimerManager { //配置时间间隔 private static final long PERIOD_DAY = 24 * 60 * 60 * 1000; public TimerManager() { Calendar calendar = Calendar.getInstance(); //每日0:00执行方法,循环执行 calendar.set(Calendar.HOUR_OF_DAY, 0); //时,24小时制 calendar.set(Calendar.MINUTE, 0); //分 calendar.set(Calendar.SECOND, 0); //秒 Date date=calendar.getTime(); //第一次执行定时任务的时间 //如果第一次执行定时任务的时间 < 当前的时间,任务立即执行,所以加一天 if (date.before(new Date())) { date = this.addDay(date, 1); } Timer timer = new Timer(); //Timer相当于一个调度器,调度继承TimerTask的方法类,是一种定时器工具,用来在一个后台线程计划执行指定任务。它可以计划执行一个任务一次或反复多次。
//NFDFlightDataTimerTask.java需要执行的方法
NFDFlightDataTimerTask task = new NFDFlightDataTimerTask();
//安排指定的任务在指定的时间开始进行重复的固定延迟执行。
timer.schedule(task,date,PERIOD_DAY);
}
// 设置每次执行时间间隔,24小时便是每天执行
public Date addDay(Date date, int num) {
Calendar startDT = Calendar.getInstance();
startDT.setTime(date);
startDT.add(Calendar.DAY_OF_MONTH, num);
return startDT.getTime();
}
}
4.编写定时执行方法
NFDFlightDataTimerTask.java
此类继承了TimerTask
TimerTask一个抽象类,它的子类代表一个可以被Timer计划的任务。
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import java.util.ArrayList; import java.util.List; import java.util.TimerTask; @Component public class NFDFlightDataTimerTask extends TimerTask { @Override public void run() { try{
//编写需要执行的方法
} catch ( Exception e ) { log.info("系统异常"+e.getMessage()); } } }