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定时任务,每天定时执行任务

时间: 2024-08-06 15:59:43

java定时任务,每天定时执行任务的相关文章

java web每天定时执行任务

第一步: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 package com.eh.util; import java.util.Calendar; import java.util.Date; import java.util.Timer; /**  * java定时任务

Java实现每天定时执行任务

1.TimerManager类 package com.lyz.util; import java.util.Calendar; import java.util.Date; import java.util.Timer; /** * java定时任务,每天定时执行任务 * @author liuyazhuang * */ public class TimerManager { //时间间隔 private static final long PERIOD_DAY = 24 * 60 * 60

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_DA

JAVA定时执行任务,每天定时几点钟执行任务

JAVA定时执行任务,每天定时几点钟执行任务的示例如下: 1.建立TimerManage类,设置时间点,时间点设置的管理类,代码如下: 1 package com.pcitc.time; 2 3 import java.util.Calendar; 4 import java.util.Date; 5 import java.util.Timer; 6 7 public class TimerManager { 8 9 //时间间隔 10 private static final long PE

java定时执行任务(一)

需求: 经常遇到这样的需求:要求每天执行一次任务,执行任务时间是凌晨3点 实现: 为了便于检测,我假设的是下一分钟执行任务,每10秒重复执行.(对应现实项目:每天3点执行任务.那么就是下一个3点执行任务,并每次sleep24小时) TimerManager.java package cn.test.test; import java.util.Calendar; import java.util.Date; import java.util.Timer; public class TimerMa

Java定时任务:利用java Timer类实现定时执行任务的功能

一.概述 在java中实现定时执行任务的功能,主要用到两个类,Timer和TimerTask类.其中Timer是用来在一个后台线程按指定的计划来执行指定的任务. TimerTask一个抽象类,它的子类代表一个可以被Timer计划的任务,具体要执行的代码写在TimerTask需要被实现的run方法中. 二.先看一个最简单的例子 我们通过代码来说明 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28

linux下crontab定时执行java程序,java程序不执行的问题

crontab的语法 在以上各个字段中,还可以使用以下特殊字符: 星号(*):代表所有可能的值,例如month字段如果是星号,则表示在满足其它字段的制约条件后每月都执行该命令操作. 逗号(,):可以用逗号隔开的值指定一个列表范围,例如,"1,2,5,7,8,9" 中杠(-):可以用整数之间的中杠表示一个整数范围,例如"2-6"表示"2,3,4,5,6" 正斜线(/):可以用正斜线指定时间的间隔频率,例如"0-23/2"表示每两

linux 定时执行shell脚本 定时任务

本文讲述crontab具体用法,以供备忘. 在oracle 中可以利用dbms_job包定时执行pl/sql.sql过程,在像备份等需要在操作系统级定时任务只能采用crontab来完成 利用crontab来定时执行任务大致有如下三步: 1.编写shell脚本 2.利用crontab加入到定时任务队列 3.查看作业完成情况 一.如何建立shell脚本 linux下有很多不同的shell,但我们通常使用bash(bourne again shell)进行编程,因为bash是免费的并且很容易使用 程序

java定时执行任务

1:listner加载Timer,定时执行任务 2:定时任务类