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());
}
}
}

java 定时器任务模板的更多相关文章

  1. java 读写word java 动态写入 模板文件

    import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileInputStream; import ja ...

  2. java定时器和多线程实践记录

    这几天因为需要测试mongodb读写分离的问题,因此写了个定时查询程序,并且用到了多线程,以达到定时启动多个线程查询数据库的效果,下边代码记录备忘: package timmer; import ja ...

  3. java定时器,Spring定时器和Quartz定时器

    一.java定时器的应用 其实java很早就有解决定时器任务的方法了,java提供了了类java.util.TimerTask类基于线程的方式来实现定时任务的操作,然后再提供java.util.Tim ...

  4. Java定时器:Timer

    项目中往往会遇到需要定时的任务,例如订单,当用户在某个规定时间内没有操作订单时,订单状态将会发生改变. 那么在这种情况下,我们会用到定时器. 举例: import java.util.Timer; / ...

  5. Java定时器应用

    在Java多线程中,有的时候,我们需要按照指定间隔时间来执行一些任务,这时,我们就要用到定时器.我们在这里以Java中的Timer定时器为例,演示定时器的应用. 请看下述代码: import java ...

  6. eclipse中添加Java代码注释模板

    eclipse中添加Java代码注释模板 1.Window->Preference->Java->Code Style->Code Template,进入注释编辑界面 2.文件 ...

  7. java定时器实现总结

    前言:Java定时器目前主要有3种实现方式:JDK组件,Spring Task,Quartz框架. 1. JDK组件(1) java.util.TimerTask MyTimerTask.java: ...

  8. java 替换字符串模板(模板渲染)

    java渲染字符串模板,也就是说在java字符串模板中设置变量字符串,使用变量去渲染指定模板中设置好的变量字符串.下面介绍4种替换模板方式: 1.使用内置String.format String me ...

  9. Java定时器TimeTask

    package com.alan.timer; import java.util.Calendar;import java.util.Date;import java.util.Timer;impor ...

随机推荐

  1. Android 四大组件学习之ContentProvider五

    上几节学习了ContentProvider的实际用途,读取短信.插入短信,读取联系人.插入联系人等. 本节课在学习ContentProvider的观察者. 在生活中有第三方的软件.比方什么短信软件.此 ...

  2. Resources.Theme

    public final class Resources.Theme extends Object java.lang.Object    ↳ android.content.res.Resource ...

  3. 1366 xth 的第 12 枚硬币

    1366 xth 的第 12 枚硬币  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 钻石 Diamond 题解       题目描述 Description 传说 xth 曾 ...

  4. javascript 将变量值作为对象属性 获取对象对应的值

    例子 var var="name"; var objname="obj"; objname=objname+"."+var; alert(e ...

  5. CentOS7 网卡名称重命名为eth*

    CentOS7 禁用网卡名称命名规则,启动时传递"net.ifnames=0 biosdevname=0"/etc/default/grupgrup2-mkconfig -o /b ...

  6. ecshop类的解析2 json_encode和json_decode的具体实现

    在看ecshop源码时,看到json这个类,研究了一下,它是为了兼容低版本php而做出的类,是对php的数据和json转换时使用的. encode和decode函数是对json的操作,对应json_e ...

  7. [Swift]LeetCode1073. 负二进制数相加 | Adding Two Negabinary Numbers

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...

  8. idea新建文件无法识别(二)

    1,出现问题的步骤: 当想新增一个Hello.java文件时候 选错了文件类型.新建了一个text文件.当回过头来把文件后缀改掉的时候发现idea无法识别,颜色一直是灰色. 2,解决问题的办法: 选择 ...

  9. java.util.Date

    package com.etc.usual; import java.util.Calendar; import java.util.Date; /** * * @author Administrat ...

  10. HttpServletResponse对象,自己学习的心得

    Web服务器收到客户端的http请求,会针对每一次请求,分别创建一个用于代表请求的request对象,和代表响应response对象. request和response对象既然代表请求和响应,那我们要 ...