首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用CompletableFuture安全吗?异步任务的正确执行会得到保证吗?

使用CompletableFuture安全吗?异步任务的正确执行会得到保证吗?
EN

Stack Overflow用户
提问于 2020-04-03 12:31:20
回答 1查看 510关注 0票数 0

我想为servlet使用异步模式的servlet CompletableFuture Java 8。

但发现的信息:

EJB创建仅在

规范中被禁止。为了使容器更加健壮,应该在整个服务器过程中禁止它。将线程创建从EJB转移到例如Servlets并不是一个合理的解决方案。

..。

企业bean不能试图管理线程。企业bean不能尝试启动、停止、挂起或恢复线程,或更改线程的优先级或名称。企业bean不能试图管理线程组。“

在使用CompletableFuture安全吗?异步任务的正确执行会得到保证吗?

EN

回答 1

Stack Overflow用户

发布于 2020-04-06 17:46:30

正如注释中提到的,这取决于您计划如何使用它。

在EE环境中,唯一合法的线程池/执行器服务是托管执行器:

https://docs.oracle.com/javaee/7/api/javax/enterprise/concurrent/ManagedExecutorService.html

托管,因为它是一个由服务器管理和提供的资源,可以注入到您的EJB中。

代码语言:javascript
复制
@Resource(name = "wm/executorService")
ManagedExecutorService managedExecutorService;

注入了这样的资源之后,您就有资格显式地运行CompletableFuture的异步方法,提供这个托管执行器:

代码语言:javascript
复制
CompletableFuture<Void> result = CompletableFuture.runAsync(
                        yourBean::yourMethod,
                        managedExecutorService);
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61011980

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档