我有一个执行数据库操作的异步任务。这可能需要几分钟。
public void doSomeStuff() {
// 10 minutes of database magic
}
由于数据库方面可能存在并发问题,因此必须只能同时一次异步执行此方法(例如单例)。此外,如果该方法已经在运行,则不应丢弃下一个调用,而应记住并在前一个调用完成时执行下一个调用。就像一个队列。
我研究了@Asynchronous
和@ConcurrencyManagement(...)
批注,但是它们似乎没有提供所需的控件。
如何使用JBoss EAP 6(+ JSF)在JavaEE 7中实现此目标?
您可以将@Stateless
Bean与@Asynchronous
方法配合使用。
然后,可以使用注释设置bean使用的线程池@Pool(<pool name>)
。如果将池大小限制为1,则可以满足需要。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句