实例讲解java定时任务

 更新时间:2015年08月04日 11:56:48   投稿:lijiao  
这篇文章主要介绍了实例讲解java定时任务,感兴趣的的朋友可以参考下

今天为大家分享的一个经验就是java的定时任务,就是说在一天的某个时间点执行以下代码。

public class TimerManager {
 
 //时间间隔
 private static final long PERIOD_DAY = 24 * 60 * 60 * 1000;
 
 public TimerManager() {
 Calendar calendar = Calendar.getInstance();
    
 /*** 定制每日2:00执行方法 ***/
 
 calendar.set(Calendar.HOUR_OF_DAY, 2);
 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();
  
 NFDFlightDataTimerTask task = new NFDFlightDataTimerTask();
 //安排指定的任务在指定的时间开始进行重复的固定延迟执行。
 timer.schedule(task,date,PERIOD_DAY);
 }
 
 // 增加或减少天数
 public Date addDay(Date date, int num) {
 Calendar startDT = Calendar.getInstance();
 startDT.setTime(date);
 startDT.add(Calendar.DAY_OF_MONTH, num);
 return startDT.getTime();
 }
 
}

在TimerManager 这个类里面,大家一定要注意时间点的问题。如果你设定在凌晨2点执行任务。但你是在2点以后发布的程序或是重启过服务,那这样的情况下,任务会立即执行,而不是等到第二天的凌晨2点执行。为了,避免这种情况发生,只能判断一下,如果发布或重启服务的时间晚于定时执行任务的时间,就在此基础上加一天。

public class NFDFlightDataTimerTask extends TimerTask {
 
 private static Logger log = Logger.getLogger(NFDFlightDataTimerTask.class);
 
 @Override
 public void run() {
 try {
  //在这里写你要执行的内容
  
 } catch (Exception e) {
  log.info("-------------解析信息发生异常--------------");
 }
 }
}
 
public class NFDFlightDataTaskListener implements ServletContextListener {
 
 public void contextInitialized(ServletContextEvent event) {
 new TimerManager();
 }
 
 public void contextDestroyed(ServletContextEvent event) {
 }
 
}

然后要在web.xml里面配置监听器

<listener>
 <listener-class>
 com.listener.NFDFlightDataTaskListener
 </listener-class>
</listener>

以上就是本文的全部内容,希望对大家的学习有所帮助。

相关文章

  • Java抽象类与接口区别详解

    Java抽象类与接口区别详解

    这篇文章主要介绍了Java抽象类与接口区别详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-03-03
  • 基于dubbo中Listener的实现方法

    基于dubbo中Listener的实现方法

    下面小编就为大家带来一篇基于dubbo中Listener的实现方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-08-08
  • 基于Java实现记事本功能

    基于Java实现记事本功能

    这篇文章主要为大家详细介绍了基于Java实现记事本功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-12-12
  • Java编程通过匹配合并数据实例解析(数据预处理)

    Java编程通过匹配合并数据实例解析(数据预处理)

    这篇文章主要介绍了Java编程通过匹配合并数据实例解析(数据预处理),分享了相关代码示例,小编觉得还是挺不错的,具有一定借鉴价值,需要的朋友可以参考下
    2018-01-01
  • 最新springboot解决跨域的几种方式小结

    最新springboot解决跨域的几种方式小结

    跨域指的是浏览器不能执⾏其他⽹站的脚本。它是由浏览器的同源策略造成的,是浏览器对javascript施加的安全限制,这篇文章主要介绍了springboot解决跨域的几种方式,需要的朋友可以参考下
    2022-05-05
  • Java的方法和this关键字如何理解与应用

    Java的方法和this关键字如何理解与应用

    Java语言中的“方法”(Method)在其他语言当中也可能被称为“函数”(Function)。对于一些复杂的代码逻辑,如果希望重复使用这些代码,并且做到“随时任意使用”,那么就可以将这些代码放在一个大括号{}当中,并且起一个名字。使用代码的时候,直接找到名字调用即可
    2021-10-10
  • Spring集成Swagger常见错误及解决办法

    Spring集成Swagger常见错误及解决办法

    这篇文章主要介绍了Spring集成Swagger常见错误及解决办法,帮助大家更好的理解和学习使用Spring,感兴趣的朋友可以了解下
    2021-05-05
  • 详解Spring3.x 升级至 Spring4.x的方法

    详解Spring3.x 升级至 Spring4.x的方法

    本篇文章主要介绍了详解Spring3.x 升级至 Spring4.x的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-04-04
  • Spring IOC和aop的原理及实例详解

    Spring IOC和aop的原理及实例详解

    这篇文章主要介绍了Spring IOC和aop的原理及实例详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-11-11
  • Java 协程 Quasar详解

    Java 协程 Quasar详解

    这篇文章主要介绍了Java 协程 Quasar详解,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-07-07

最新评论