【问题标题】:How do I run code at a set time every day in Java? [duplicate]如何在 Java 中每天在设定的时间运行代码? [复制]
【发布时间】:2021-05-28 22:51:25
【问题描述】:

目前正在研究某种算法,我需要每天在同一时间运行代码。我试过创建一个计时器,但我对它并不熟悉,我能做的最多就是每 x 秒运行一次代码。我知道我可以每 86400 秒做一次,但这似乎充其量只是一个笨拙的解决方案,我觉得有更好的解决方案。如果您有任何想法,请告诉我。非常感谢。

【问题讨论】:

标签: java


【解决方案1】:

如果你想在特定时间(比如 10:00)运行yourTask(),你可以这样做:

Calendar today = Calendar.getInstance();
today.set(Calendar.HOUR_OF_DAY, 10);
today.set(Calendar.MINUTE, 0);
today.set(Calendar.SECOND, 0);

Timer timer = new Timer();
timer.schedule(yourTask(), today.getTime(), TimeUnit.MILLISECONDS.convert(1, TimeUnit.DAYS));

【讨论】:

  • 这不会编译,您需要将TimerTask 引用传递给schedule(),但目前您正在直接执行yourTask()
  • Calendar 类多年前被 JSR 310 中定义的 java.time 类取代。Timer 多年前被ScheduledExecutorService 取代。
  • 这很好用!非常感谢。上面的评论是正确的 yourTask() 没有工作,我只是在调度程序中定义了 run() 方法,它工作正常。
【解决方案2】:

您可以使用不同的调度程序。例如Quartz 就是其中之一

【讨论】:

    猜你喜欢
    • 2013-04-18
    • 1970-01-01
    • 2022-01-24
    • 2013-11-09
    • 2017-09-25
    • 2021-10-12
    • 1970-01-01
    • 2019-09-17
    • 1970-01-01
    相关资源
    最近更新 更多