java 定时器任务模板
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<br /><br />
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需要执行的方法 <br /> NFDFlightDataTimerTask task = new NFDFlightDataTimerTask(); <br /><br /> //安排指定的任务在指定的时间开始进行重复的固定延迟执行。 <br /> timer.schedule(task,date,PERIOD_DAY); <br /> } <br /><br /><br /> // 设置每次执行时间间隔,24小时便是每天执行 <br /> public Date addDay(Date date, int num) { <br /> Calendar startDT = Calendar.getInstance(); <br /> startDT.setTime(date); <br /> startDT.add(Calendar.DAY_OF_MONTH, num); <br /> return startDT.getTime(); <br /> } <br />}<br />
4.编写定时执行方法
NFDFlightDataTimerTask.java <br /><br />此类继承了TimerTask<br /><br />TimerTask一个抽象类,它的子类代表一个可以被Timer计划的任务。
<em> </em>
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{<br /> //编写需要执行的方法<br /><br /> } catch ( Exception e ) { log.info("系统异常"+e.getMessage()); } } }
相关推荐
九天银河技术 2020-11-11
zhangjie 2020-11-11
Crazyshark 2020-11-13
步知道 2020-10-27
tufeiax 2020-09-03
李轮清 2020-09-15
85251846 2020-09-14
wangpaiyonghu 2020-06-28
jackalwb 2020-06-14
yhljxy 2020-06-14
myveer 2020-06-14
xiaobaif 2020-06-14
klarclm 2020-06-13
songshijiazuaa 2020-06-13
TMD咯MySQL 2020-06-12
archive 2020-06-12
清风徐来水波不兴 2020-06-09