【发布时间】:2015-07-27 14:15:49
【问题描述】:
我有一个要求,我需要复制我的一些文件并将其放到内部服务器上。这需要定期发生,例如每天晚上 8 点。这也是一个 Swing 应用程序,在我的本地 PC 上运行。我知道我可以使用 Java 来安排任务,可以使用 java.util.Time、JodaTime 甚至更好的 Quartz Scheduler。
但是,问题来了。没有人会为了这个调度程序让计算机保持 24 小时开机。据我所知,如果有人重新启动 PC,Java 调度程序也会死掉。相反,一旦计划了任务,如果计算机打开,计划的任务应该在每天晚上 8 点发生,无需人工干预。这意味着,无需重新启动应用程序并重新调度。
我描述的这个功能很常见,可以在所有的病毒防护、基于窗口的警报等中看到。但是我如何在 Java 中实现相同的功能?目前,如果我必须使用特定于 Windows 的解决方案,例如使用 JNI 或对批处理文件进行一些破解等(我正在使用 Windows),那也很好。
至少java可以做到这一点吗?
【问题讨论】:
-
为什么不让应用程序在启动时运行?
-
@ThomasNairn:Quartz 调度程序在机器关闭时终止。我不知道 GUI 是如何发生这种情况的,但我在 Web 服务器中看到过这种情况。
-
但如果应用程序在后台运行。 (setVisible(false);) 你可以重新安排时间,甚至只用一个简单的线程来监控时间?
-
如果计算机在给定时间仍然停机怎么办?无论哪种方式,您都需要一个操作系统级别的工具(或者等效地,可以保留任务并在启动时启动的工具),例如
cron。 -
@biziclop:如果电脑宕机了,没关系。没有副本。
标签: java swing time scheduled-tasks quartz-scheduler