java定时任务,每天定时执行任务。以下是这个例子的全部代码。

  1. public class TimerManager {
  2. //时间间隔
  3. private static final long PERIOD_DAY = 24 * 60 * 60 * 1000;
  4. public TimerManager() {
  5. Calendar calendar = Calendar.getInstance();
  6. /*** 定制每日2:00执行方法 ***/
  7. calendar.set(Calendar.HOUR_OF_DAY, 2);
  8. calendar.set(Calendar.MINUTE, 0);
  9. calendar.set(Calendar.SECOND, 0);
  10. Date date=calendar.getTime(); //第一次执行定时任务的时间
  11. //如果第一次执行定时任务的时间 小于 当前的时间
  12. //此时要在 第一次执行定时任务的时间 加一天,以便此任务在下个时间点执行。如果不加一天,任务会立即执行。
  13. if (date.before(new Date())) {
  14. date = this.addDay(date, 1);
  15. }
  16. Timer timer = new Timer();
  17. NFDFlightDataTimerTask task = new NFDFlightDataTimerTask();
  18. //安排指定的任务在指定的时间开始进行重复的固定延迟执行。
  19. timer.schedule(task,date,PERIOD_DAY);
  20. }
  21. Calendar startDT = Calendar.getInstance();
  22. startDT.setTime(date);
  23. startDT.add(Calendar.DAY_OF_MONTH, num);
  24. return startDT.getTime();
  25. }
  26. }
  27. // 增加或减少天数
  28. public Date addDay(Date date, int num) {
  29. Calendar startDT = Calendar.getInstance();
  30. startDT.setTime(date);
  31. startDT.add(Calendar.DAY_OF_MONTH, num);
  32. return startDT.getTime();
  33. }
  34. }
   

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

  1. public class NFDFlightDataTimerTask extends TimerTask {
  2. private static Logger log = Logger.getLogger(NFDFlightDataTimerTask.class);
  3. @Override
  4. public void run() {
  5. try {
  6. //在这里写你要执行的内容
  7. } catch (Exception e) {
  8. log.info("-------------解析信息发生异常--------------");
  9. }
  10. }
  11. }
  12. public class NFDFlightDataTaskListener implements ServletContextListener {
  13. public void contextInitialized(ServletContextEvent event) {
  14. new TimerManager();
  15. }
  16. public void contextDestroyed(ServletContextEvent event) {
  17. }
  18. }

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

<listener>

<listener-class>

com.listener.NFDFlightDataTaskListener

</listener-class>

</listener>

   

Java 在某一个时间点定时执行任务(转载)的更多相关文章

  1. 在Java中如何设置一个定时任务,在每天的一个时间点自动执行一个特定的程序

    Quartz定时机制 首先导入jar包到程序内 quartz-all-1.6.0.jar 然后创建一个XML TimeConfig.xml 名字可以自己定义 <?xml version=&quo ...

  2. C# 创建系统服务并定时执行【转载】

    [转载]http://www.cnblogs.com/hfzsjz/archive/2011/01/07/1929898.html C# 创建系统服务并定时执行 1.新建项目 --> Windo ...

  3. 只用120行Java代码写一个自己的区块链-2网络

    已经看完第一章的内容了吗,欢迎回来. 上一章我们介绍了关于怎么去编写自己的区块链,完成哈希和新块的校验.但是它只是在一个终端(结点)上跑.我们怎么样来连接其他结点以及贡献新的块呢,怎么样广播到其他结点 ...

  4. 【转】oracle定制定时执行任务

    本节摘要:本节介绍使用oracle自带的job来实现oracle定制定时执行任务. 1.引言 定制定时执行的任务有两种形式,系统级别和数据库级别, 从操作系统级别来讲, windows系统我们可以使用 ...

  5. python3:定时执行自动化测试脚本

    转载请注明出处:https://www.cnblogs.com/shapeL/p/9172990.html 1.windows任务计划定时执行脚本 (1)创建 .bat 文件,执行脚本的命令(inte ...

  6. oracle定制定时执行任务

    1.引言 定制定时执行的任务有两种形式,系统级别和数据库级别, 从操作系统级别来讲, windows系统我们可以使用任务计划来实现, 对于winXP系统,设置步骤如下,开始---设置---控制面板-- ...

  7. SQL Server 定时执行SQL语句的方法

    SQL SERVER 定时任务,你可以启动一下.不过要想更加直观的控制,直接写一个程序,定时执行你的存储过程. 1.设置“SQL Server 代理”(SQL Server Agent)服务随系统启动 ...

  8. linux centos7 定时执行服务监控脚本

    2021-08-25 1. 需求 在服务挂掉之后我们要怎么做才能保证服务在短时间内开启?可以编写脚本监控服务的状态,在服务挂掉后及时将其开启,并定时执行该脚本. 2. 脚本编写 思路:平常我们可以通过 ...

  9. java定时执行任务(一)

    需求: 经常遇到这样的需求:要求每天执行一次任务,执行任务时间是凌晨3点 实现: 为了便于检测,我假设的是下一分钟执行任务,每10秒重复执行.(对应现实项目:每天3点执行任务.那么就是下一个3点执行任 ...

随机推荐

  1. python编码-2

    字典 >>> aa={} >>> aa['wo']=[1,2,3,4] >>> aa['ni']=[5,6,7,8] >>> a ...

  2. 在word里插入图片,并设置图片的格式

    由于公司业务需要,需要在生成的word里插入图片(公司印章),仔细想了下,还是在word模板里添加一个书签,然后再该书签的位置插入图片,并设置图片的格式方便些: 代码如下: using System; ...

  3. VSFTP服务器

    vsftpd 是"very secure FTP daemon"的缩写,安全性是它的一个最大的特点.vsftpd 是一个 UNIX 类操作系统上运行的服务器的名字,它可以运行在诸如 ...

  4. ruby md5加签验签方法

    # md5签名def md5_sign(data,key) return OpenSSL::Digest::MD5.hexdigest(data+key)end # md5验签def md5_veri ...

  5. 动态布局--动态修改RelativeLayout宽高的方法

    本文实例讲述了Android编程动态修改RelativeLayout宽高的方法.分享给大家供大家参考,具体如下: 我们经常会动态修改RelativeLayout的宽高,这样的代码,比较简单,就是修改R ...

  6. Java中Enum类型的序列化(转)

    在Java中,对Enum类型的序列化与其他对象类型的序列化有所不同,今天就来看看到底有什么不同.下面先来看下在Java中,我们定义的Enum在被编译之后是长成什么样子的. Java代码: Java代码 ...

  7. mac下配置openfire

    下载 在浏览器中打开如下网址http://www.igniterealtime.org/downloads/index.jsp,根据你的操作系统选择对应的版本进行下载,这里我是在mac下配置的,所以选 ...

  8. 1. Longest Palindromic Substring ( 最长回文子串 )

    要求: Given a string S, find the longest palindromic substring in S. (从字符串 S 中最长回文子字符串.) 何为回文字符串? A pa ...

  9. ASP.NET Page对象各事件执行顺序(转)

    很久没写 asp.net 的东西了,search 了一下 page 的事件执行顺序,找到如下的东西,仅仅做记录用 Page.PreInit 在页初始化开始时发生 Page.Init 当服务器控件初始化 ...

  10. 用Python给你的博客加上水印

    之前写的博客里面用到的图片都没有加水印,今天才在别的网站上发现自己的博客居然一个字不动的出现在了别人的文章里,而且还不标注出处,简直醉了. 其实博客这种东西讲真我是很愿意让别人看得,因为自己写的也比较 ...