Java - 顺序异步执行

时间:2016-04-14 07:18:49

标签: java java-ee asynchronous jboss

我有一个执行数据库操作的异步任务。这可能需要几分钟。

public void doSomeStuff() {
   // 10 minutes of database magic
}

由于数据库端可能存在并发问题,因此该方法必须同时只有一个异步执行(如单例)。此外,如果该方法已在运行,则不应丢弃下一个呼叫,但在前一个呼叫结束时重新计算并执行。就像一个队列。

我已经对@Asynchronous@ConcurrencyManagement(...)注释进行了研究,但它们似乎无法提供所需的控制权。

如何使用JBoss EAP 6(+ JSF)在JavaEE 7中实现这一目标?

1 个答案:

答案 0 :(得分:1)

您可以使用@Stateless方法使用@Asynchronous bean。

然后,您可以使用注释@Pool(<pool name>)设置bean使用的线程池。如果将池大小限制为1,则可以获得所需的内容。