当前位置: 首页 > 编程笔记 >

实例讲解java定时任务

邹学民
2023-03-14
本文向大家介绍实例讲解java定时任务,包括了实例讲解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>

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

 类似资料:
  • 在本节中,我们以程序 textfinder 为例,向大家详细讲解使用 Qt Creator 创建应用程 序的全过程,我们将使用 Qt Creatro 创建工程和代码,并使用 Qt Designer 创建用户界面。 如果你对如何使用 Qt Designer 还不太熟悉的话,建议回头看看前几章。这个例子的运行效 果如图 12-35 所示。 图 12-35 程序运行效果 12.9.1 程序运行内部机理

  • 本文向大家介绍Java 多线程实例讲解(一),包括了Java 多线程实例讲解(一)的使用技巧和注意事项,需要的朋友参考一下 Java多线程(一) 多线程作为Java中很重要的一个知识点,在此还是有必要总结一下的。 一.线程的生命周期及五种基本状态 关于Java中线程的生命周期,首先看一下下面这张较为经典的图: 上图中基本上囊括了Java中多线程各重要知识点。掌握了上图中的各知识点,Java中的多线

  • 本文向大家介绍java封装实例用法讲解,包括了java封装实例用法讲解的使用技巧和注意事项,需要的朋友参考一下 我们可以选择把类的方法、属性装起来,便于日后的程序书写和使用,这种处理方法就是封装的思想。因为封装类之后,其他的外部类方法就不能在混入其中,对代码的安全性进行了提高。接下来我们就对java中封装的概念、目的进行介绍,然后在实例中为大家演示封装的方法。 1.概念 封装性是面向对象三大特征之

  • 本文向大家介绍python中用Scrapy实现定时爬虫的实例讲解,包括了python中用Scrapy实现定时爬虫的实例讲解的使用技巧和注意事项,需要的朋友参考一下 一般网站发布信息会在具体实现范围内发布,我们在进行网络爬虫的过程中,可以通过设置定时爬虫,定时的爬取网站的内容。使用python爬虫框架Scrapy框架可以实现定时爬虫,而且可以根据我们的时间需求,方便的修改定时的时间。 1、Scrap

  • 本文向大家介绍实例讲解Android自定义控件,包括了实例讲解Android自定义控件的使用技巧和注意事项,需要的朋友参考一下 小编在此之前给大家介绍过关于Android自定义控件的用法等,需要的可以参考下: Android开发之自定义控件用法详解 详解Android自定义控件属性 可以看到QQ上的ToolBar其实就是一个自定义的view,可以看到不同的界面就是简单地修改了文字而已,在第二张与第

  • 本文向大家介绍java发送javax.mail邮件实例讲解,包括了java发送javax.mail邮件实例讲解的使用技巧和注意事项,需要的朋友参考一下 平时我们网上逛网站的时候,经常会用到网站的注册。有很多方法,比如发短信验证,发邮箱验证。最近在SSH框架下,做了一个简单的邮件发送激活链接到邮箱,然后激活注册用户的一个功能。我用到的MailServer是易邮邮件服务器,引用的是javax.mail