annotations - 如何使@Schedule 方法一次只调用一次

标签 annotations timeout java-ee-6 ejb-3.1 schedule

我们正在使用 @Schedule EJB 注释来启动计划作业,每 x 秒执行一次增量 SOLR 导入。当然,我们希望尽可能减少索引的时移。目前我尝试每 5 秒执行一次增量。

所以我的问题是:我能否确保作业只被调用一次? 那么假设索引持续时间超过 5 秒,下一个调度调用是否会等到前一个返回?

最佳答案

是的。您可以将 bean 设为 @Singleton 并使用 @Lock(LockType.Write)以确保计时器不会并行运行。请注意,LockType.Write 是 Singleton 中的默认设置。因此,即使是带有注释的显式提及也不需要。

关于annotations - 如何使@Schedule 方法一次只调用一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8164176/

相关文章:

android - @AfterViews 相当于 onCreate 还是 onPostCreate?

java - 如何从实现类方法获取Java自定义注释

jenkins pipeline选项超时然后通知

java - Primefaces Data Exporter 目标必须是绝对 ID 吗?

jakarta-ee - Java EE 6 CDI 实现之间的差异

java - 如果此注释未写入字节码,如何在运行时访问它?

java - 如何在 Java 中使用 @inherited 注解?

java - HttpURLConnection 超时设置

java ThreadPoolExecutor超时不被遵守

multithreading - 在 JavaEE 6 中执行子进程