java - 每天、每周、每月、每年调用一个方法

标签 java timer task alarm

我需要在特定时间自动发送报告给我的客户

  • 每天凌晨 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/

相关文章:

java - 此驱动程序未配置集成身份验证

jquery - 当用户开始在 jQuery 中填写表单时启动计时器

java - 当所有线程完成处理时运行代码

c# - Timer 或 Task 适合空闲时间长的任务吗

c# - 如何在C#中使用鼠标允许异步控制?

java - 加工过程中运动平稳

javascript - 上传超过 100 KB 的文件时出现 500 内部服务器错误

java - 在 Java 中,类型变量的边界只能出现在类型变量声明中,对吗?

类方法上的python线程计时器

msbuild - AfterPublish目标不起作用