四步轻松搞定java web每天定时执行任务
程序员文章站
2023-12-20 08:32:28
本文介绍了java web每天定时执行任务,分享给大家,具体如下:
第一步:
package com.eh.util;
import java.util....
本文介绍了java web每天定时执行任务,分享给大家,具体如下:
第一步:
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(); } }
第二步:
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("-------------解析信息发生异常--------------"); } } }
第三步:
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文件
<!--nfdflightdatatasklistener 监听器--> <listener> <listener-class>com.eh.util.nfdflightdatatasklistener</listener-class> </listener>
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。