java定时任务,每天定时执行任务_SUN先森-YM的博客-程序员秘密

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 * 1000;
     public TimerManager() {
          Calendar calendar = Calendar.getInstance(); 
                 
          /*** 定制每日2:00执行方法 ***/
 
          calendar.set(Calendar.HOUR_OF_DAY, 16);
          calendar.set(Calendar.MINUTE, 0);
          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();
           
          LyzTimerTask task = new LyzTimerTask();
          //安排指定的任务在指定的时间开始进行重复的固定延迟执行。
          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();
         }
}


LyzTmerTask



package com.lyz.util;
 
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.TimerTask;
 
/**
 * 在 TimerManager 这个类里面,大家一定要注意 时间点的问题。如果你设定在凌晨2点执行任务。但你是在2点以后
 *发布的程序或是重启过服务,那这样的情况下,任务会立即执行,而不是等到第二天的凌晨2点执行。为了,避免这种情况
 *发生,只能判断一下,如果发布或重启服务的时间晚于定时执行任务的时间,就在此基础上加一天。
 * @author liuyazhuang
 *
 */
public class LyzTimerTask 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("-------------解析信息发生异常--------------");
        }
    }
     
}


LyzListener


package com.lyz.util;
 
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
 
 
public class LyzListener implements  ServletContextListener {
 
    public void contextInitialized(ServletContextEvent sce) {
         new TimerManager();
    }
 
    public void contextDestroyed(ServletContextEvent sce) {
        // TODO Auto-generated method stub
         
    }
 
}



配置LyzListener


<!--LyzListener 监听器-->
<listener>
    <listener-class>com.lyz.util.LyzListener</listener-class>
</listener>


版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/dongfengpo666/article/details/78291049

智能推荐

基于QT4的linux串口助手_qt linux 读取串口 等待_bigPillow的博客-程序员秘密

说明:环境:ubuntu12.04基于QT4的linux串口助手近期网上很火的qt编写串口通信程序全程图文详解收到了网上的疯狂转载,上面的链接也不确定是不是原创,不过开源的东西不必追究那个原创了。按照这个教程。调试了几天一直没有结果,最后通过一句一句的分析每天语句终于可以收到数据。在此将本人遇到的纠结几天的问题写于此。首先,大致按照以上教程先写出了调试程序:-----------

JavaScript自动生成li节点 并把文本框的值赋给li.innerHtml_hyzhang6的博客-程序员秘密

作者:hyzhang时间:2017-10-11描述:自动生成li标签 并把文本框的值赋给li标签-->window.onload =function(){var  inpt = document.getElementById("txt");var oUl =document.getElementById("ull");var btn1 = d

再议GCC编译时的静态库依赖顺序问题_weixin_33895516的博客-程序员秘密

GCC编译时的静态库依赖次顺问题.pdf 相关博文1:http://blog.chinaunix.net/uid-20682147-id-76330.html相关博文:http://blog.chinaunix.net/uid-20682147-id-5096676.html假设有如三个源代码文件: ...

Guava之controller中使用缓存cache_weixin_34205076的博客-程序员秘密

为什么80%的码农都做不了架构师?&gt;&gt;&gt; ...

python判断字符为数字还是字母,检测Python字符串是数字还是字母_Iris Pan的博客-程序员秘密

How can I detect either numbers or letters in a string? I am aware you use the ASCII codes, but what functions take advantage of them?解决方案Check if string is positive digit (integer) and alphabetYou ma...

何謂 Device Discovery_Iam_Rocky的博客-程序员秘密

http://zip.nvp.com.tw/forum.php?mod=viewthread&tid=249&extra=page%3D6Device Discovery:定義 GigE 相機在網路連結上如何取得 IP 位址及如何被識別。

随便推点

Android—Toast 相关工具类_林伟茂的博客-程序员秘密

/** * Tooast相关工具类 */public class ToastUtils { private static final int COLOR_DEFAULT = 0xFEFFFFFF; private static final String NULL = "null"; private static IToast iToast; private static int sGravity = -1; private static int sXOffse

vue:路由菜单刷新高亮_antd-vue 刷新时保持当前路由高亮_帅帅哥的兜兜的博客-程序员秘密

很多人遇到了路由高亮的问题。问为什么页面一刷新进来当前页就不不高。刷新的时候也没有记录状态。其实就是路由没有记录。。。我们想要实现的效果是:1、这里用的是 Element UI 。先把菜单封装。请看上面的文章:https://blog.csdn.net/u013592575/article/details/1034938652、element UI 中 NavMenu 有一个 d...

Failure in initial nonlinear constraint function evaluation. FMINCON cannot continue.初始非线性约束函数评价失败。_硬光的博客-程序员秘密

出现这个情况是因为非线性约束函数发生了错误,编译时失败比如,这里第12行的t(i,j)=t(i,j)/(((co(i)-co(j))^2+(si(i)-si(j))^2);,多了一个‘)’,改为` t(i,j)=t(i,j)/((co(i)-co(j))2+(si(i)-si(j))2);后即可正常运行...

基于Bert的中文情感分析代码及分析_bert情感分析代码_SurverDevin的博客-程序员秘密

基于Bert的中文情感分析代码及分析众所周知,Google 前段时间开源了他们的 BERT – BidirectionalEncoderRepresentations fromTransformers 模型,使用多头注意力和位置嵌入,一举打破自然语言处理领域11个不同问题的最好记录。NLP界开启一个全新的时代,利用Bert做NLP的任务也是取得很好的效果,本文利用微调Bert模型做中文情感分析,...

推荐文章

热门文章

相关标签