我在Wildfly上使用JBeret,比方说我有一个由步骤A,步骤B,步骤C组成的Job1。假设我有一个由StepB组成的Job2。
现在,当两个作业同时运行时,我想防止在prallel中执行StepB。这意味着如果Job2运行StepB,而Job1想要启动StepB,则Job1应该等待或失败。
我怎样才能做到这一点?
谢谢。
您可以使用一个保存标志的单例bean,例如AtomicBoolean、CountDownLatch。在启动步骤B之前,在其关联的步骤侦听器中,尝试查询和更新标志,如果成功,则继续运行该步骤。否则,请使该步骤失败,或者等待一定的时间,然后再次检查。
在stepB执行结束时,它的step监听器执行类似的操作来释放锁。