Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在不使用crontab的情况下作为调度器运行java程序_Java_Scripting - Fatal编程技术网

在不使用crontab的情况下作为调度器运行java程序

在不使用crontab的情况下作为调度器运行java程序,java,scripting,Java,Scripting,我有一个主程序,它用Java执行一些任务。我想将其作为批处理作业运行&由于我们的策略,我不允许在可以配置它的地方使用crontab 我的另一个选择是什么?如何安排Java程序每天运行一次 任何示例包装器代码都将非常有用 谢谢 以后可以使用-execute命令 和/或将其与-delay结合使用一段指定的时间 在循环中,在后台运行 例如,假设您有以下脚本 #!/usr/bin/env bash while true; do java -jar your.jar.file sleep

我有一个主程序,它用Java执行一些任务。我想将其作为批处理作业运行&由于我们的策略,我不允许在可以配置它的地方使用crontab

我的另一个选择是什么?如何安排Java程序每天运行一次

任何示例包装器代码都将非常有用

谢谢

以后可以使用-execute命令
和/或将其与-delay结合使用一段指定的时间
在循环中,在后台运行

例如,假设您有以下脚本

#!/usr/bin/env bash
while true; do
    java -jar your.jar.file
    sleep 24h # wait one day
done
以同样的方式运行它

bash script && disown &

您可以使用java定时器任务


您还可以查看。它的调度格式与crontab非常相似。

我不确定您是否想用Java或Bash来调度作业。如果尝试用Java实现,可以尝试为作业创建一个线程,并让线程休眠一段时间:

class repeatTask extends Thread
{
    int repeatTime;

    public repeatTask(int repeatTime)
    {
        this.repeatTime = repeatTime;
    }

    public void run()
    {
        while(true)
        {
            try {
                Thread.sleep(repeatTime);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            /* Some action codes here*/
        }
    }
}
您还可以使用类,它还可以让您创建线程:

public void start()
{
    timerSchedule();            
}

public void timerSchedule()
{
    Timer timer = new Timer();

    timer.schedule(new TimerTask() {
        public void run() {
            /*Action codes here*/
        }
    }, /*Repeat Time here*/);
}
。。。由于我们的政策,我不允许在可以配置它的地方使用crontab

显然,这一政策肯定有一定的原因,尽管它是什么并不明显。任何替代方案都可能与导致它们禁止cron的相同推理相冲突。(当然,上面提出的一些替代方案可能比
cron
更糟糕)

最好的办法是让制定这项政策的人告诉你安排工作的批准方式。或者至少让他们解释为什么禁止使用
cron
,这样你就知道在你想出的任何替代方案中应该避免什么了

(好的,这项政策可能是对过去某个问题的愚蠢的下意识反应。但是,你仍然需要了解问题是什么…

我非常喜欢这样的东西:看看这对你是否有效。您可以将其用于调度位,只需运行一个标准Java程序