java中的ManagedExecutorService和ExecutorService有什么区别

sri*_*vas 3 java concurrency

我需要在我的 Wildfly Java EE 应用程序中向执行器服务提交任务。

当前代码如下,

ExecutorService jobExecutorService = Executors.newSingleThreadExecutor(); jobExecutorService.submit(new Task(request));

对于每个请求,同一段代码将运行并提交单线程执行器的任务。

但我不确定新构造的线程是否受到管理,或者是否是在我的 java ee 应用程序中为任何异步流提交任务的正确方法。

如果我需要启动一个应由容器管理的线程,我是否需要使用 ManagedExecutorService 或者是否有任何其他实现。

需要一些这方面的知识。

mai*_*290 6

回答一下标题中的问题:

ManagedExecutorService是Java EE 规范的一部分,也是Java SE 规范ExecutorService的一部分。

这两个接口之间的主要区别在于,它们ManagedExecutorService只是一个

ExecutorService 的可管理版本。

由于您不应该在 Java EE 环境中生成任何非托管线程,因此您应该只使用其中的托管内容,而非托管对于 Java SE 应用程序来说完全没问题。

ManagedExecutorService在 Java EE 应用程序中获取 a 的正确方法是使用ManagedExecutorService注释@Resource注入

@Resource
ManagedExecutorService managedExecutorService;
Run Code Online (Sandbox Code Playgroud)