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

最佳答案

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

准备参数的cron4j(task1,间隔30分钟),放入----->队列
在cron4j的任务2中,在处理了队列中的参数之后,它可以在完成之前再次检查队列的内容,并继续处理队列中是否有新内容。

使用这种方法,可以按顺序处理事物,并且将这两个任务与队列对象进行接口,从而使它们松散地耦合在一起。

您可以将java.util.Queue用于队列。

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

10-11 07:19