我需要在特定时间自动发送报告给我的客户
- 每天凌晨 00:01
- 每周日上午 00:01
- 每月 1 天
- 每年的第一天
我每天都在这样做:
public void contextInitialized(ServletContextEvent arg0) {
System.out.println("context initiallized");
System.out.println("Starting timer");
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.HOUR_OF_DAY, 0);
calendar.set(Calendar.MINUTE, 1);
calendar.set(Calendar.SECOND, 0);
Date alarmTime = calendar.getTime();
_timer = new Timer();
_timer.schedule(new AlarmTask(), alarmTime);
}
这是我执行日常任务的类(class):
public class AlarmTask extends TimerTask {
public void run() {
// Do your work here; it's 00:01 AM!
}
}
它似乎工作正常但是当我在上午 00:01 之后的任何时间启动 tomcat 说在凌晨 02:30 一旦上下文加载到我需要的位置,任务就会执行第二天执行...
他们对我的代码有什么问题吗?
最佳答案
为什么不使用 QuartzSchedular http://quartz-scheduler.org/
关于java - 每天、每周、每月、每年调用一个方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14781296/