java web每天定时执行任务(四步轻松搞定)

https://www.cnblogs.com/LiSheng97625/p/4648739.html

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

 * @author wls

 *

 */

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, 16);

          calendar.set(Calendar.MINUTE, 10);

          calendar.set(Calendar.SECOND, 0);

           

          Date date=calendar.getTime(); //第一次执行定时任务的时间

          System.out.println(date);

          System.out.println("before 方法比较:"+date.before(new Date()));

          //如果第一次执行定时任务的时间 小于 当前的时间

          //此时要在 第一次执行定时任务的时间 加一天,以便此任务在下个时间点执行。如果不加一天,任务会立即执行。循环执行的周期则以当前时间为准

          if (date.before(new Date())) {

              date = this.addDay(date, 1);

              System.out.println(date);

          }

           

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

         }

}

第二步:

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

package com.eh.util;

 

import java.text.SimpleDateFormat;

import java.util.Calendar;

import java.util.TimerTask;

 

/**

 * 在 TimerManager 这个类里面,大家一定要注意 时间点的问题。如果你设定在凌晨2点执行任务。但你是在2点以后

 *发布的程序或是重启过服务,那这样的情况下,任务会立即执行,而不是等到第二天的凌晨2点执行。为了,避免这种情况

 *发生,只能判断一下,如果发布或重启服务的时间晚于定时执行任务的时间,就在此基础上加一天。

 * @author wls

 *

 */

public class NFDFlightDataTimerTask extends TimerTask {

    private static SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

    @Override

    public void run() {

        try {

             //在这里写你要执行的内容

            System.out.println("执行当前时间"+formatter.format(Calendar.getInstance().getTime()));

        catch (Exception e) {

            System.out.println("-------------解析信息发生异常--------------");

        }

    }

     

}

第三步:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

package com.eh.util;

 

import javax.servlet.ServletContextEvent;

import javax.servlet.ServletContextListener;

 

 

public class NFDFlightDataTaskListener implements  ServletContextListener {

 

    public void contextInitialized(ServletContextEvent sce) {

         new TimerManager();

    }

 

    public void contextDestroyed(ServletContextEvent sce) {

        // TODO Auto-generated method stub

         

    }

 

}

第四步:配置web.xml文件

1

2

3

4

<!--NFDFlightDataTaskListener 监听器-->

<listener>

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

</listener>

  https://www.cnblogs.com/LiSheng97625/p/4648739.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/328644.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

从Unity3D编译器升级聊起Mono

接前篇Unity 5.3.5p8 C#编译器升级&#xff0c;本文侧重了解一些Mono的知识。 Unity3D的编译器升级 新升级的Mono C#编译器&#xff08;对应Mono 4.4&#xff09; Unity编辑器及播放器所使用的Mono运行时还未升级。 新编译器仍针对C# 4&#xff0c;是旧的编译器也支持的版本。 …

bat脚本中获取上级目录_批处理bat命令--获取当前盘符和当前目录和上级目录

批处理命令获取当前盘符和当前目录%~d0 是当前盘符%cd% 是当前目录可以用echo %cd%进行打印测试以下例子是命令行编译Visual Studio编写的程序&#xff1a;echo offset b%cd% //将当前目录保存到参数b中,等号前后不要有空格C:cd program filescd microsoft visual studiocd com…

日期类的加减及java中所以日期类的操作算法大全

转载自 日期类的加减及java中所以日期类的操作算法大全1.计算某一月份的最大天数Calendar timeCalendar.getInstance(); time.clear(); time.set(Calendar.YEAR,year); //year 为 int time.set(Calendar.MONTH,i-1);//注意,Calendar对象默认一月为0 int daytime.getActu…

使用Spring的@Scheduled实现定时任务

https://blog.csdn.net/prisonbreak_/article/details/49180307 使用Spring的Scheduled实现定时任务 2015年10月16日 16:23:21 阅读数&#xff1a;103485更多 个人分类&#xff1a; Java开发 Spring配置文件xmlns加入 xmlns:task"http://www.springframework.org/sch…

新闻发布项目——实体类(categoryTB)

package bdqn.newsMange.entity; /*** 新闻类别实体类* author Administrator**/ public class categoryTB {private int categoryID;//编号private String categoryName;//类别名public int getCategoryID() {return categoryID;}public void setCategoryID(int categoryID) {…

.NET Core 系列5 :使用 Nuget打包类库

NuGet是个开源项目&#xff0c;项目包括 NuGet VS插件/NuGet Explorer/NuGetServer/NuGet命令行等项目&#xff0c;.NET Core项目完全使用Nuget 管理组件之间的依赖关系&#xff0c;Nuget已经成为.NET 生态系统中不可或缺的一个组件&#xff0c;从项目角度&#xff0c;将项目中…

foxmail 不知道这样的主机_华为P50真机图!网友:早知道这样,就不加价买mate40了...

hello&#xff0c;大家好&#xff0c;欢迎收看本期节目由于各方面原因&#xff0c;今年的华为mate40系列确实很难抢不少心急的用户甚至是加价买了入手之后有的用户有开始后悔了&#xff0c;当然不是该机不好而是他们看到了疑似华为P50的真机渲染图它的正面并没有丑陋的双打孔&a…

F#年度调查结果概述

本文要点 年度社区调查向600多名开发人员了解了他们的F#使用情况&#xff1b;在工作中&#xff0c;F#的最大好处包括正确性、让不合法状态不可达以及能够更轻松地解决复杂的问题&#xff1b;大多数F#开发人员仍然使用Windows作为他们的开发平台之一&#xff0c;但使用Mac和Linu…

java Date获取 年月日时分秒

转载自 java Date获取 年月日时分秒 package com.util;import java.text.DateFormat; import java.util.Calendar; import java.util.Date;public class Test {public void getTimeByDate(){Date date new Date();DateFormat df1 DateFormat.getDateInstance();//日期格式&…

anroid 内存溢出 Bitmap OutOfMemoryError

Bitmap OutOfMemoryError 2014年06月09日 09:55:28 阅读数&#xff1a;2434 标签&#xff1a; OutOfMemoryErrorBitmap回收 更多 个人分类&#xff1a; 异常问题和解决办法 在创建Bitmap的时候由于对象过多而没有即使回收&#xff0c;导致的内存不足&#xff1a; java.lang…

wxml报错原因_C#生成、解析xml文件以及处理报错原因

转载自&#xff1a;http://blog.csdn.net/lilinoscar/article/details/21027319简单的介绍一下生成XML文件以及解析&#xff0c;因为有些数据不一定放到数据库&#xff0c;减少链接数据库用xml还是比较好些。如果遇到问题也就是解析时报错&#xff0c;对于解析&#xff0c;可以…

新闻发布项目——接口类(UserDao)

package bdqn.newsMange.Dao;import java.util.List;import bdqn.newsMange.entity.User;/*** 用户信息接口* author Administrator**/ public interface UserDao {//查询public List<User>getAllUesr();//添加public int addUser(User user);//修改public int updateUse…

替代反射调用的几种方式及性能测试

园子里和这个话题的相关文章比较多&#xff0c;本文是旧话重提&#xff0c;外加个小的总结。主要因为近期看到很多同事、朋友都已经使用 VS2012 进行 .NET 4.5 开发了&#xff0c;却还在大量使用反射&#xff0c;不知道用新的方式。或有所了解&#xff0c;但又害怕性能不好不敢…

JAVA解析html文档,替换img图片路径成base64编码,并将文章存入数据库

转载自 JAVA解析html文档&#xff0c;替换img图片路径成base64编码&#xff0c;并将文章存入数据库开发环境&#xff1a;struts2 spring hibernate 数据库:oracle 需求&#xff1a;在HTML编辑器中输入文章&#xff0c;传入后台&#xff0c;文章中所有图片路径&#xff0c;转换…

Android Bitmap OutOfMemory 解决办法

Android Bitmap OutOfMemory 解决办法 置顶 2014年07月01日 14:41:22 阅读数&#xff1a;3072 标签&#xff1a; OutOfMemoryBitmapandroid图片优化更多 个人分类&#xff1a; 异常问题和解决办法 在Android应用里&#xff0c;最耗费内存的就是图片资源。而且在Android系统中…

为什么光标停在表格中间_word里面为什么打出来的数字中间为啥差一个光标的距离 - 卡饭网...

为Word宏添加VBA项目的数字证书签名为Word宏添加VBA项目的数字证书签名 用户在使用Word编辑文档时可以借助Word宏命令提高工作效率。在默认情况下&#xff0c;Word宏的安全性设置为“高”&#xff0c;当运行Word宏命令时会自动禁用宏。如果将Word宏安全性设置为“中”&#xff…

Java8学习笔记(1) -- 从函数式接口说起

转载自 Java8学习笔记&#xff08;1&#xff09; -- 从函数式接口说起希望本文能够成为Java8 Lambda表达式的快速入门指南。 函数式接口 理解Functional Interface&#xff08;函数式接口&#xff0c;以下简称FI&#xff09;是学习Java8 Lambda表达式的关键所在&#xff0c;所…

.Net Aop(静态织入)框架 BSF.Aop

BSF.Aop .Net 免费开源&#xff0c;静态Aop织入&#xff08;直接修改IL中间语言&#xff09;框架&#xff0c;类似PostSharp(收费)&#xff1b;实现前后Aop切面和INotifyPropertyChanged注入方式。 开源地址: https://git.oschina.net/chejiangyi/BSF.Aop 开源QQ群: .net 开源基…

C#7.0中有哪些新特性?

以下将是 C# 7.0 中所有计划的语言特性的描述。随着 Visual Studio “15” Preview 4 版本的发布&#xff0c;这些特性中的大部分将活跃起来。现在是时候来展示这些特性&#xff0c;你也告诉借此告诉我们你的想法&#xff01; C&#xff03;7.0 增加了许多新功能&#xff0c;并…

java8的函数指针

转载自 java8的函数指针这段时间 项目实在是太紧了&#xff0c;没有时间写博客啊。java模式的文章还没有写完&#xff0c;后期在写吧。 最近项目中大量的使用到了远程调用以及回调。是采用反射的方式实现的。担心到大量的反射会影响到程序运行的效率问题。 所以决定放弃使用反…