【问题标题】:How to create a Java cron job [duplicate]如何创建 Java cron 作业 [重复]
【发布时间】:2014-04-05 11:58:04
【问题描述】:

我正在编写一个独立的批处理 Java 应用程序来从 YouTube 读取数据。我想设置一个 cron 作业以每小时执行某些作业。

我搜索并找到了为基本操作而不是 Java 应用程序执行 cron 作业的方法。

【问题讨论】:

标签: java cron


【解决方案1】:

您可以将 TimerTask 用于 Cronjobs。

Main.java

public class Main{
   public static void main(String[] args){

     Timer t = new Timer();
     MyTask mTask = new MyTask();
     // This task is scheduled to run every 10 seconds

     t.scheduleAtFixedRate(mTask, 0, 10000);
   }

}

MyTask.java

class MyTask extends TimerTask{

   public MyTask(){
     //Some stuffs
   }

   @Override
   public void run() {
     System.out.println("Hi see you after 10 seconds");
   }

}

替代方案 你也可以使用ScheduledExecutorService

【讨论】:

    【解决方案2】:

    首先,我建议您在开始新事物之前始终参考docs

    我们有SchedulerFactory,它根据给定的 Cron 表达式安排 Job。

        //Create instance of factory
        SchedulerFactory schedulerFactory=new StdSchedulerFactory();
    
        //Get schedular
        Scheduler scheduler= schedulerFactory.getScheduler();
    
        //Create JobDetail object specifying which Job you want to execute
        JobDetail jobDetail=new JobDetail("myJobClass","myJob1",MyJob.class);
    
        //Associate Trigger to the Job
        CronTrigger trigger=new CronTrigger("cronTrigger","myJob1","0 0/1 * * * ?");
    
        //Pass JobDetail and trigger dependencies to schedular
        scheduler.scheduleJob(jobDetail,trigger);
    
        //Start schedular
        scheduler.start();
    

    MyJob.class

    public class MyJob implements Job{
    
          @Override
          public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
                     System.out.println("My Logic");
            }
    
        }
    

    【讨论】:

    • 您的 `docs' 指的是第三方库...并且 OP 正在询问有关设置 cron 作业以启动 java 程序的问题。您似乎是在代码中设置工作。
    【解决方案3】:

    如果您使用的是 unix,您需要先编写一个 shellscript 来运行您的 java 批处理。

    之后,在 unix 中,运行此命令“crontab -e”来编辑 crontab 脚本。 为了配置crontab,请参考这篇文章http://www.thegeekstuff.com/2009/06/15-practical-crontab-examples/

    保存您的 crontab 设置。然后等待时间到,程序会自动运行。

    【讨论】:

    • 我已经尝试过了。但这并没有提供在 Cron 中运行 Java 程序的解决方案..
    • @user3138111:为什么不呢?你加了什么线?怎么样:0 * * * * java -cp yourpath SomeClass@hourly java -cp yourpath SomeClass
    • 我创建了一个 helloworld Java 类来将文件写入文件。但我无法看到生成的输出文件。这是我的 cron 作业文本 1 * * * * java -cp HelloWorld 。 HelloWorld 类包含以下文本 PrintWriter out = new PrintWriter(new FileWriter("/output.txt",true)); out.println("内存"); out.close();
    • 创建一个 temp.sh 文件。在 temp.sh 中,您编写脚本来运行您的 java 程序。例如:$JAVA_HOME/java -cp helloworld。然后在 crontab 中配置00 2 * * * temp.sh >/dev/null 2>&1。这个配置让系统每天2点运行temp.sh
    猜你喜欢
    • 2020-06-11
    • 2015-04-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-27
    • 1970-01-01
    相关资源
    最近更新 更多