【问题标题】:java cron solution with completion checking带有完成检查的java cron解决方案
【发布时间】:2013-09-08 02:08:20
【问题描述】:

我正在为 java-application 寻找一个简单的 cron 类型的解决方案。

我查看了 cron4j,您可以在其中设置一个方法来执行,例如每 5 分钟一次。

只是,我有一个自定义要求,如果之前的方法调用仍在运行,它应该启动另一个同时调用,而只是跳过该调用并在 5 分钟后重试,等等 - -- 即我想确保永远不会为同一个作业并行运行 2 个线程。只有当前一个方法调用完成后,才能开始新的调用。

在 Java 中实现此要求的最简单/最稳定的方法是什么? (如果有更好的方法,不一定是cron4j)

【问题讨论】:

    标签: java cron scheduled-tasks scheduler cron4j


    【解决方案1】:

    我更喜欢 Cron4j,因为我相信它轻量级且易于使用。所以我会使用应用程序范围的方法来执行此同步。

    例如,如果您的应用程序是分布式的,那么您的作业详细信息必须存储在某个共享存储中,例如数据库。然后在此数据库中,您可以设置一个标志(即每个作业详细信息的列值),以指示该作业是否已在执行。然后,应该通过添加您喜欢的任何偏移量来修改下一个执行时间(即另一个列值,并且我发现拥有一个包含下一个执行标志的列非常有帮助,如果您还没有尝试过,则应该尝试一下)。

    如果您的应用程序不是分布式的,那么您可以轻松地使用同步的静态方法或静态ReentrantLock 实例来控制同步。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-11-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-22
      • 1970-01-01
      • 2011-08-02
      • 2016-11-08
      相关资源
      最近更新 更多