TimerTask定时任务

web.xml

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

监听器类

package com.sign.listener;

import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;

import com.sign.time.TimerManager;

public class NFDFlightDataTaskListener implements ServletContextListener{

         public void contextInitialized(ServletContextEvent event) {
            new TimerManager();
         }

         public void contextDestroyed(ServletContextEvent event) {}

}

设置执行时间类

package com.sign.time;

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

      /*** 定制每日11:23执行方法 ***/

      calendar.set(Calendar.HOUR_OF_DAY, 11);
      calendar.set(Calendar.MINUTE, 23);
      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();
     }

}

要执行的任务方法

package com.sign.time;

import java.util.Date;
import java.util.TimerTask;

import org.apache.log4j.Logger;

public class NFDFlightDataTimerTask extends TimerTask {
    private static Logger log = Logger.getLogger(NFDFlightDataTimerTask.class);

     @Override
     public void run() {
      try {
       //在这里写你要执行的内容
          System.out.println((new Date()).toLocaleString());
          System.out.println("KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK");

      } catch (Exception e) {
       log.info("-------------解析信息发生异常--------------");
      }
     }
}
     
时间: 2024-11-08 21:23:38

TimerTask定时任务的相关文章

java定时任务(三):timerTask定时任务

这种方式是纯粹的java代码,需要继承timerTask接口并重写run方法,创建这个类的时候就会调用run方法. 基本的使用逻辑是: 把自己需要处理的业务逻辑放在自己写的这个继承了timerTask的类中,然后new一个timer并调用schedule方法,在schedule中设定一个新的自己类的对象为参数,同时配置其他时间信息,示例如下: package scheduleTest; import java.text.SimpleDateFormat; import java.util.Dat

在Listener(监听器)定时启动的TimerTask(定时任务)中使用[email&#160;protected]注解的bean

1.有时候在项目中需要定时启动某个任务,对于这个需求,基于JavaEE规范,我们可以使用Listener与TimerTask来实现,代码如下: public class TestTaskListener implements ServletContextListener { //Context()初始化方法 @Override public void contextInitialized(ServletContextEvent sce) { //新建一个定时管理器 new TestTimerMa

Timer 和 TimerTask 定时任务

见名知意,这是用来做定时器,定时任务的类和抽象类. Timer类 scheduleAtFixedRate 方法 TimerTask抽象类 run 抽象方法 delay: 任务执行前的延迟(毫秒). intevalPeriod: 任务连续执行的周期时间(毫秒). timer.cancel();  将队列中的任务全部清空,  若要限制任务执行的次数可使用此方法. tk.cancel();  将自己从任务队列中清除,达到结束任务的目的. 原文地址:https://www.cnblogs.com/rem

Spring整合TimerTask实现定时任务调度

一. 前言 最近在公司的项目中用到了定时任务, 本篇博文将会对TimerTask定时任务进行总结, 其实TimerTask在实际项目中用的不多, 因为它不能在指定时间运行, 只能让程序按照某一个频度运行. 二. TimerTask JDK中Timer是一个定时器类, 它可以为指定的定时任务进行配置. JDK中TimerTask是一个定时任务类, 该类实现了Runnable接口, 是一个抽象类, 我们可以继承这个类, 实现定时任务. /** * 继承TimerTask实现定时任务 */ publi

Java定时任务示例

package com.my.timer; import java.util.Date; import java.util.TimerTask; public class myTask extends TimerTask { /** * 定时任务调用的方法,即处理业务的方法 */ @Override public void run() { System.out.println("定时任务执行了:" + new Date().toLocaleString()); } } package

Java多线程基础(二)定时器类:Timer类和TimerTask类

Java多线程基础(二)定时器类:Timer类和TimerTask类 Timer类和TimerTask类是jdk实现定时器功能的早期方法,jdk1.5以前就支持Timer类和TimerTask类.JDK1.5之后引入了新的机制,将在后续博文中研究. 1 指定时间间隔后执行任务 import java.util.Date; import java.util.Timer; import java.util.TimerTask; public class TraditionalTimerTest {

多线程中sleep和wait的区别,以及多线程的实现方式及原因,定时器--Timer

1.  Java中sleep和wait的区别 ① 这两个方法来自不同的类分别是,sleep来自Thread类,和wait来自Object类. sleep是Thread的静态类方法,谁调用的谁去睡觉,即使在a线程里调用b的sleep方法,实际上还是a去睡觉,要让b线程睡觉要在b的代码中调用sleep. ② 锁: 最主要是sleep方法没有释放锁,而wait方法释放了锁,使得其他线程可以使用同步控制块或者方法. sleep不出让系统资源:wait是进入线程等待池等待,出让系统资源,其他线程可以占用C

javaSE第二十四天

第二十四天????363 1:多线程(理解)????363 (1)JDK5以后的Lock锁????363 A:定义????363 B:方法:????364 C:具体应用(以售票程序为例)????364 1,. SellTicket类????364 2,. SellTicketDemo测试类????365 (2)死锁问题的描述和代码体现????365 1. DieLockDemo测试类????365 2. DieLock类(该类继承自Thread)????366 3. MyLock(锁对象类)??

java学习--java.util包中常用类

java.util包被称为java工具包,里面包含大部分的工具类 Random 随机数类 new Random() rd.nextInt() rd.nextInt(100) Scanner 扫描器类 Scanner sc = new Scanner(system.in); String str = sc.next(); String str1 = sc.nextLine(); int t = sc.nextInt(); float t = sc.nextFloat(); Date 日期类 Dat