我正在使用 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/