Java定时器

代码


import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import java.util.Calendar;
import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;

public class TimerUtil implements ServletContextListener {


    @Override
    public void contextInitialized(ServletContextEvent servletContextEvent) {

        Calendar calendar = Calendar.getInstance();
        int year = calendar.get(Calendar.YEAR);
        int month = calendar.get(Calendar.MONTH);
        int day = calendar.get(Calendar.DAY_OF_MONTH);
        calendar.set(year, month, day, 00, 30, 00);
        // 当天00点30(默认执行时间)
        Date defaultdate = calendar.getTime();
        Date sendDate = null;
        if (defaultdate.before(new Date())) {
            // 若当前时间超过了defaultdate时间,当天不再执行,则将执行时间sendDate改为明天00点30
            calendar.add(Calendar.DATE, 1);
            sendDate = calendar.getTime();
        }else {
            // 若当前时间没有超过defaultdate时间,则将执行时间sendDate改为defaultdate
            sendDate = defaultdate;
        }

        /**
         * ----------------每日任务 ----------------
         * 启动服务器后,若此时时间没过00点30,等待。到了00点30自动执行一次,24小时后(第二天00点30)再执行一次,周而复始
         * 启动服务器后,若此时时间已经超过00点30,则等到24小时后(第二天00点30)才执行一次,周而复始
         */
        Timer dTimer = new Timer();
        dTimer.schedule(new TimerTask() {

            @Override
            public void run() {

                System.out.println("每日任务已经执行");
            }
        }, sendDate, 24 * 60 * 60 * 1000);// 定时24小时:24 * 60 * 60 * 1000
        System.out.println("每日定时删除参会通知--已启动!--已启动!");
    }

    @Override
    public void contextDestroyed(ServletContextEvent servletContextEvent) {
        System.out.println("每日定时删除参会通知 --已关闭!");
    }
}

在web.xml中设置监听文件

<web-app>  
  <listener>
    <listener-class>  代码路径  </listener-class>
  </listener>
</web-app>

重新部署项目,启动tomcat即可自动执行

posted @   GKGKGK  阅读(286)  评论(0编辑  收藏  举报
编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示