0

我在 Wildfly 上使用 JBeret,假设我有由 StepA、StepB、StepC 组成的 Job1。假设我有由 StepB 组成的 Job2。

现在,当两个作业同时运行时,我想阻止 StepB 并行执行。这意味着如果 Job2 运行 StepB 而 Job1 想要启动 StepB,则 Job1 应该等待或失败。

我怎样才能做到这一点?

谢谢你。

4

1 回答 1

0

您可以使用包含标志的单例 bean,例如 AtomicBoolean、CountDownLatch。在启动 stepB 之前,在其关联的 step listener 中,尝试查询并更新 flag,如果成功,则继续运行该 step。否则,使该步骤失败,或等待一段时间并再次检查。

在 stepB 执行结束时,它的 step listener 执行类似的操作来释放锁。

于 2022-02-15T20:25:08.563 回答