题
我正在寻找一种有效的方法来每天下午 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项目提供功能完备的计划。
不隶属于 StackOverflow