我正在寻找一种有效的方法来每天下午 3 点执行一个方法,而不管应用程序最初运行的时间或运行了多长时间。
这必须完全由应用程序完成,无需操作系统干预(例如 Windows 任务计划程序)
我一直在尝试不同配置的 java.util.Timer,但没有成功。
任何帮助,将不胜感激。
谢谢。
我正在寻找一种有效的方法来每天下午 3 点执行一个方法,而不管应用程序最初运行的时间或运行了多长时间。
这必须完全由应用程序完成,无需操作系统干预(例如 Windows 任务计划程序)
我一直在尝试不同配置的 java.util.Timer,但没有成功。
任何帮助,将不胜感激。
谢谢。
你应该看看Quartz,它是一个基于 Java 的作业调度系统。
您可能想要使用类似石英引擎的东西,它可以执行诸如执行错过的任务(例如在ahem崩溃期间)之类的事情,并且它可以消除尝试管理线程的工作。
例如,如果您使用线程并将其置于睡眠状态并在 86400 秒(一天)后将其唤醒,您将在 DST 一天内延迟一小时(天 = 82800 秒)或提前一小时(天 = 90000 秒)醒来,所以小心你选择的任何解决方案
您可以启动一个线程来计算到下一个下午 3 点的差值并在这段时间内休眠。当它醒来时,它会执行该方法并重新计算并休眠。这是你的意思吗?
正如其他人所说,Quartz 是一种选择,您可以使用它执行类似 cron 的操作、作业或触发器,这里有一个关于此主题的链接:http: //www.ibm.com/developerworks/java/library/j-quartz /index.html
Jcrontab 是一个用 Java 编写的调度程序。项目目标是为 Java 项目提供一个功能齐全的时间表。