我有一个工作的 java 程序,它在用户输入并处理它们的文件夹中获取一组文件。
现在用户不需要他们的干预。他们希望程序每 30 分钟运行一次,并从预先确定的路径处理文件。
当我用谷歌搜索它时,我知道我应该使用调度程序。那么我们应该使用特定于操作系统的调度程序还是 Java 调度程序?以及如何使用推荐的那个?
同样在系统重新启动时,该过程应自动启动。
提前致谢。哈沙
我有一个工作的 java 程序,它在用户输入并处理它们的文件夹中获取一组文件。
现在用户不需要他们的干预。他们希望程序每 30 分钟运行一次,并从预先确定的路径处理文件。
当我用谷歌搜索它时,我知道我应该使用调度程序。那么我们应该使用特定于操作系统的调度程序还是 Java 调度程序?以及如何使用推荐的那个?
同样在系统重新启动时,该过程应自动启动。
提前致谢。哈沙
简单的方法是使用TimerTask. 在我的示例中,您的操作将每 30 分钟运行一次。
public class Schedular extends TimerTask {
@Override
public void run() {
// your operation
}
public void start() {
Timer timer = new Timer();
timer.scheduleAtFixedRate(this, 5 * 1000 , 60 * 30 * 1000);
}
public static void main(String[] args) {
Schedular schedular = new Schedular();
schedular.start();
}
}
处理这个问题的最简单方法可能是创建一个 cron 作业。好处是它的简单性和“标准化”,即。人们知道在哪里寻找经常性工作。缺点是您为程序正常运行创建了另一个依赖项。如果您确实创建了一个 cron 条目,请记住您的 java 程序应该以无状态方式设计。 http://en.wikipedia.org/wiki/Cron
如果系统或多或少总是启动,请使用 Java 调度程序(谷歌如何使用 Executor/TimerTask)。如果您需要在系统重新启动时自动启动该进程,则需要走操作系统特定的路线。
对于 Windows,安排一个服务每 30 分钟运行一次您的 java 程序(参见http://windows.microsoft.com/en-US/windows7/schedule-a-task示例)。您基本上需要运行“java -cp {some classpath} {your program}”
对于基于 Unix 的系统,设置一个每 30 分钟调用一次 java 程序的 cron 作业。