java - 在 Cron4J 中应用序列

标签 java scheduled-tasks sequence

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

最佳答案

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

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

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

通过这种方法,事物会按顺序处理,并且两个任务是松散耦合的,因为它们与队列对象交互。

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

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

相关文章:

java - 如果多个字符可以包含数字和下划线(最多 128 个),则正则表达式的第一个字符必须是字母

java - 在 ScheduledThreadPoolExecutor 中终止之前等待任务完成

database - 排序多个用户计划的算法或脚本

mysql - 从 SQL Server 到 MySQL 的每日更新

c++ - 检测运算符 << 序列的结尾

python - 为什么 `{*l}` 比 `set(l)` 快 - python 集合(不仅仅是对于集合,对于所有序列)

Java 和 Telnet 响应不可读

java - 当我们保存或更新时,是否可以将值从 boolean 值转换为 "Y"/"N"

java - 如何从类型为 map 的数据库中检索值

xslt - 合并xsl中的两个序列