java - 在 Cron4J 中应用序列

标签 java scheduled-tasks sequence

我正在使用 cron4j 安排任务每 30 分钟运行一次。但是,如果同一任务的前一个实例仍在执行,我不想运行任务执行的第二个实例。
我知道 Executor 中有 isLive() 和 join() 之类的方法,但不确定使用它们来实现目标的适当方法。

最佳答案

我假设您想实现顺序处理。如果是这种情况,我的建议是使用队列作为 2 个 cron4j 任务、产生过程参数的 rask 和处​​理参数的任务之间的“管道”。

准备参数的 cron4j(任务 1,30 分钟间隔),放入 -----> 队列 <----- cron4j(任务 2,可能 10 分钟间隔)从中读取参数,并进行相应的处理。

在cron4j的任务2中,处理完队列中的参数后,可以在完成前再次检查队列的内容,如果队列中有新的内容,则继续处理。

使用这种方法,事情是按顺序处理的,这 2 个任务是松散耦合的,因为它们与队列对象交互。

您可以使用 java.util.Queue 作为队列。

关于java - 在 Cron4J 中应用序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8973974/

相关文章:

javascript - 生成一个随机数字序列,然后在 JavaScript 中向该序列附加一个大写字母?

java - 在Java中以void方法修改输入对象是否是错误的做法?

java - 安装JDK后,无法运行.jar

java - 在运行时在创建的 spring bean 中使用 @Scheduled 注释

powershell - 使用 PowerShell 安装计划任务时重试失败尝试

sql - 如何获取 Oracle 数据库中的所有序列?

java - ORA-02289序列不存在-选择键或将结果设置为参数对象时出错

java - JFreechart Boxplot在为盒子上色时更改盒子的大小

java - 从起点获取所有依赖关系-Java

ruby-on-rails - 使用 rake 任务时检查电子邮件是否发送过一次的最佳方法是什么?