每天在设定的时间运行Java方法

我对Java比较陌生,我已经开始研究一个项目了。 但是,我遇到了一个障碍。 我需要一种方法在一天中的某些时间运行。 我已经做了很多搜索,但我找不到任何看起来像它会做的伎俩。 我遇到了Timer类,但它似乎以一定的时间间隔运行。 Scheduler类似乎有同样的问题。 我也遇到了Quartz,但我认为我需要更轻量级的东西,我只能看到如何间歇地做事。

也许,仅仅因为我是新人,我错过了一些可以帮助我完成这些课程的东西,但我真的很困难并且可以使用一些帮助。

如果有人能指出我会在一天中的某个特定时间运行某些课程(能够取消该活动的奖励积分),并告诉我如何正确使用该课程,这将是非常棒的!

TL; DR:需要一个在一天中的某个时间执行某项操作的课程,而不是一个时间间隔,因为该课程可能会在一天中多次重启。

尝试TimerTask类

欲了解更多信息,请访问http://oreilly.com/java/archive/quartz.html

import java.util.Calendar; import java.util.Date; import java.util.Timer; import java.util.TimerTask; public class ReportGenerator extends TimerTask { public void run() { System.out.println("Generating report"); //TODO generate report } } class MainApplication { public static void main(String[] args) { Timer timer = new Timer(); Calendar date = Calendar.getInstance(); date.set( Calendar.DAY_OF_WEEK, Calendar.SUNDAY ); date.set(Calendar.HOUR, 0); date.set(Calendar.MINUTE, 0); date.set(Calendar.SECOND, 0); date.set(Calendar.MILLISECOND, 0); // Schedule to run every Sunday in midnight timer.schedule( new ReportGenerator(), date.getTime(), 1000 * 60 * 60 * 24 * 7 ); }//Main method ends }//MainApplication ends 

我强烈建议,如果可能的话,最好的方法是使用操作系统的调度程序调用脚本或Java应用程序:例如,* nix中的“cron”或Windows中的“任务调度程序”。

一种可能是使用外部调度程序 – 取决于所需的准确性。 在UNIX上使用CRON,在Windows上使用Windows Scheduler。 这很好地隔离了时间。

您可以使用Timer并创建一个简单的类,根据所需的粒度检查每分钟或5分钟的时间。 它会非常轻巧。