• 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>
  • 相关阅读:
    poj 1679 Prim判断次短路
    poj 3621 二分+spfa
    poj 3613 floyd + 快速幂
    poj3463 最短路和比最短路长1的路径数
    poj 3635 带花费的Dij+head优化
    poj 3013 SPFA
    POJ 2449 Dijstra + A* K短路
    webStorm关于ESlint6语法格式化解决方案
    Vue之 css3 样式重置 代码
    vue常用组件
  • 原文地址:https://www.cnblogs.com/likeju/p/4676022.html
Copyright © 2020-2023  润新知