gpt4 book ai didi

java - 如何并行运行 EJB 调度程序

转载 作者:行者123 更新时间:2023-12-02 06:05:54 26 4
gpt4 key购买 nike

我正在尝试运行 poll,poll1,poll2 方法来独立运行,现在如果 poll() 正在运行并且处理时间超过 10 秒,其他方法正在等待 poll() 完成其处理。我在 poll() sys out 处保留了一个断点,并且其他方法 sys out 没有执行。如何解决这个问题?下面是代码库。

我也尝试添加

@ConcurrencyManagement(ConcurrencyManagementType.CONTAINER)
@Lock(LockType.READ)

但发现行为没有变化。

@Singleton
public class SchedulerA {

@Schedule(second = "*/10", minute = "*", hour = "*", persistent = false)
public void poll() {
System.out.println("SchedulerA:: poll()");
}

@Schedule(second = "*/10", minute = "*", hour = "*", persistent = false)
public void poll1() {
System.out.println("SchedulerA:: poll()1");

}

@Schedule(second = "*/10", minute = "*", hour = "*", persistent = false)
public void poll2() {
System.out.println("SchedulerA:: poll()2");

}

}

我期待 poll() 是否正在运行(放置一个断点/或添加一个需要超过 10 秒的 for 循环)输出显示调度程序A::poll()1调度程序A::poll()210秒后再次调度程序A::poll()1调度程序A::poll()2

最佳答案

也许一些解决方法是使用 ManagedScheduledExecutorService 。通过像这样注入(inject)来使用它:

@Resource
private ManagedScheduledExecutorService scheduledExecutorService;

并安排@PostConstruct中的上述任务以固定延迟执行,例如

scheduledExecutorService.scheduleWithFixedDelay(this::poll, 1, 10, TimeUnit.SECONDS);

等等

关于java - 如何并行运行 EJB 调度程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55940193/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com