调度java程序

时间:2012-11-01 05:58:01

标签: java windows service scheduling

我有一个工作的java程序,它将一组文件放在用户输入和处理它们的文件夹中。

现在用户不需要他们的干预。他们希望程序每30分钟运行一次,并从预先确定的路径处理文件。

当我用谷歌搜索它时,我知道我应该使用调度程序。那么我们应该选择特定于操作系统的调度程序还是Java调度程序? 以及如何使用推荐的那个?

同样在系统重启时,该过程应自动启动。

提前致谢。 戒日

3 个答案:

答案 0 :(得分:1)

简单的方法是使用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();
    }
}

答案 1 :(得分:0)

处理此问题的最简单方法可能是创建一个cron作业。好处是它的简单性和“标准化”即。人们知道在哪里寻找经常性的工作。缺点是你已经为程序创建了另一个依赖项,以便正常运行。如果您确实创建了一个cron条目,请记住您的java程序应该以无状态方式设计。 http://en.wikipedia.org/wiki/Cron

答案 2 :(得分:0)

如果系统或多或少总是向上,请使用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作业。