【问题标题】:Java cron4j scheduled filesJava cron4j 计划文件
【发布时间】:2012-11-06 09:30:15
【问题描述】:

我正在使用 cron4j 库来安排程序。这是我的代码:

public class Main {
public static void main(String[] args) {
    // Declares the file.
    File file = new File("cron4j.txt");
    // Creates the scheduler.
    Scheduler scheduler = new Scheduler();
    // Schedules the file.
    scheduler.scheduleFile(file);
    // Starts the scheduler.
    scheduler.start();
    // Stays alive for five minutes.
    try {
        Thread.sleep(5L * 60L * 1000L);
    } catch (InterruptedException e) {
        ;
    }
    // Stops the scheduler.
    scheduler.stop();
}
}

在“cron4j.txt”文件中,我将程序设置为每分钟运行一次。

  1. 是否必须运行带有对象调度程序的该文件(Main 类)才能使文件中的程序每分钟执行一次?
  2. 或者一旦我运行了一次,调度程序会将这个作业传递给操作系统吗?

【问题讨论】:

    标签: java cron scheduled-tasks cron4j


    【解决方案1】:

    程序必须连续运行。 Cron4j 只是为您隐藏了调度,但实际上是一堆线程正在休眠并等待执行的时间。操作系统只是将您的程序视为正常运行的程序。

    为了使用操作系统的调度机制,不要使用 Cron4j,而是使用 crontab(在 linux 上)或 Windows 上的任务调度程序。

    Quartz Scheduler 是一种更复杂的 Java 调度程序,更被认为是行业标准。但是概念是相同的,您的程序需要运行才能执行计划任务。

    【讨论】:

    • cron4j 中每天运行任务最有效的方法是什么?我必须让主线程永远休眠?
    • Quartz 会给我带来什么好处?我唯一需要的就是每天用不同的参数运行同一个程序一两次。
    • 那时我不会选择基于 Java 的解决方案。选择基于操作系统的解决方案,即 Linux 上的 crontab 或 Windows 上的 Windows 任务调度程序。 Quartz 只是更先进、更成熟,因此大多数工业级应用服务器都集成了它。
    猜你喜欢
    • 1970-01-01
    • 2011-12-08
    • 1970-01-01
    • 2022-01-06
    • 1970-01-01
    • 2012-11-14
    • 2019-06-19
    • 2017-09-04
    • 1970-01-01
    相关资源
    最近更新 更多