Java经常性任务,日期问题

时间:2010-08-10 18:35:56

标签: java concurrency scheduled-tasks

我正在尝试在java中设置一个计划任务,以便在一天内运行一次 问题是它只在第一天运行 任何想法y?
谢谢

log.info("Schdualing midnight task");
    Timer timer = new Timer();
    Calendar date = Calendar.getInstance();

    date.set(Calendar.HOUR_OF_DAY, 23);
    date.set(Calendar.MINUTE, 30);
    date.set(Calendar.SECOND, 0);

    timer.schedule(new EndOfDayRatesTimerTask(new MidnightQuotesEvent()),
            date.getTime());

2 个答案:

答案 0 :(得分:5)

请改用scheduleAtFixedRate()。例如,

TimerTask task = new EndOfDayRatesTimerTask(new MidnightQuotesEvent());
timer.scheduleAtFixedRate(task, date.getTime(), TimeUnit.DAYS.toMillis(1));

答案 1 :(得分:0)

您正在使用schedule()的单次拍摄版本。有一个版本需要额外的参数来指定后续执行之间的延迟。