java中ManagedExecutorService和ExecutorService的区别是什么
在我的wildfly java ee应用程序中,我需要将任务提交给executor服务 当前代码如下:java中ManagedExecutorService和ExecutorService的区别是什么,java,concurrency,Java,Concurrency,在我的wildfly java ee应用程序中,我需要将任务提交给executor服务 当前代码如下: ExecutorService作业ExecutorService=Executors.newSingleThreadExecutor() jobExecutorService.submit(新任务(请求)) 在每个请求上,相同的代码段将运行并为单线程执行器提交任务 但是,我不确定新构造的线程是被管理的,还是在JavaEE应用程序中为任何异步流提交任务的正确方式 如果我需要启动一个应由容器管理的
ExecutorService作业ExecutorService=Executors.newSingleThreadExecutor()代码>
jobExecutorService.submit(新任务(请求))代码>
在每个请求上,相同的代码段将运行并为单线程执行器提交任务
但是,我不确定新构造的线程是被管理的,还是在JavaEE应用程序中为任何异步流提交任务的正确方式
如果我需要启动一个应由容器管理的线程,我需要使用ManagedExecutorService还是有其他实现
需要一些这方面的知识。回答标题外的问题:
ManagedExecutorService
是的一部分,而ExecutorService
是的一部分
这两个接口之间的主要区别在于ManagedExecutorService
只是一个
ExecutorService的可管理版本
因为您不应该在JavaEE环境中生成任何非托管线程,所以您应该只在那里使用托管线程,而非托管线程对于JavaSE应用程序来说是完全合适的
在JavaEE应用程序中获取ManagedExecutorService
的正确方法是将ManagedExecutorService
注入@Resource
注释
@Resource
ManagedExecutorService managedExecutorService;
要回答标题之外的问题:
ManagedExecutorService
是的一部分,而ExecutorService
是的一部分
这两个接口之间的主要区别在于ManagedExecutorService
只是一个
ExecutorService的可管理版本
因为您不应该在JavaEE环境中生成任何非托管线程,所以您应该只在那里使用托管线程,而非托管线程对于JavaSE应用程序来说是完全合适的
在JavaEE应用程序中获取ManagedExecutorService
的正确方法是将ManagedExecutorService
注入@Resource
注释
@Resource
ManagedExecutorService managedExecutorService;
ExecutorService不需要任何web容器,其中as ManagedExecutorService在部署到web服务器的应用程序上下文中使用,其中创建线程池并由容器维护其生命周期。ExecutorService不需要任何web容器,其中as ManagedExecutorService用于部署到Web服务器的应用程序上下文中,其中创建线程池并由容器维护其生命周期。标题为ManagedExecutorService
,但不是问题正文。您遗漏了一部分吗?标题有ManagedExecutorService
,但没有问题正文。您错过了一部分吗?您好@maio290,在Java EE应用程序中使用ExecutorService会导致创建非托管线程吗?嗯,我想是的。@srinivas是的!我见过JavaEE应用程序使用ExecutorService进行异步执行。所以这不是正确的方法?是的,这不是EE环境中的“正确”方法,因为它抛弃了服务器的线程管理。但是,只要线程没有泄漏任何资源,这可能只会对高负载的系统产生影响。因此,在很多情况下,我认为这种影响是可以忽略的,但是由于它很容易重构,所以对于任何人来说都不应该是一个问题。Hi @ MaI290,java EE应用程序中的ExcutoService是否使用导致非托管线程的创建?我见过JavaEE应用程序使用ExecutorService进行异步执行。所以这不是正确的方法?是的,这不是EE环境中的“正确”方法,因为它抛弃了服务器的线程管理。但是,只要线程没有泄漏任何资源,这可能只会对高负载的系统产生影响。因此,我认为这种影响在很多情况下是可以忽略的,但是因为它很容易重构,所以对任何人来说都不应该是个大问题。