1

我计划在我的一个 Web 应用程序中使用 executor 框架来处理后台进程,例如发送邮件和记录详细信息。当我开始阅读 Executor API 时,我了解到它提供了线程池工具。但是我有一个想法,就像我们在 Web 应用程序中不需要线程池机制。因为默认情况下我的应用程序服务器控制线程轮询并且没问题。所以我的观点是我们不需要在 Web 应用场景中实现线程池吗?这一点是对还是错?

4

4 回答 4

4

这取决于您指的是哪些线程。

用于处理进入应用服务器的请求的线程由容器本身处理。你不必担心这一点。

但是,如果您的应用程序需要处理由请求发起的较长任务,并且您希望快速响应请求,那么您可以让线程处理这些任务。为此,您可以在应用程序启动时启动多个线程,并在需要运行长任务时使用它们。看到这个

于 2013-02-08T08:24:29.153 回答
1

从 Java EE 7 开始,现在有一个 'ManagedExecutorService' ,它是 SE ExecutorService 的 EE 类似物。它被设计用于“托管环境”,即由运行在 EE 服务器中的应用程序使用。http://docs.oracle.com/javaee/7/api/javax/enterprise/concurrent/ManagedExecutorService.html

于 2016-01-27T16:16:17.980 回答
1

服务器容器为Java EE 应用程序组件提供运行时支持

(例如 servlet 和 Enterprise JavaBeansTM (EJBTM))

. 它们在应用程序组件代码与平台服务和资源之间提供了一层。所有应用程序组件代码都在由容器管理的线程上运行,并且每个容器通常期望对容器提供的对象的所有访问都发生在同一线程上。

正是由于这种行为,应用程序组件通常无法从不受容器管理的线程中可靠地使用其他Java EE 平台服务。Java EE 产品提供商也不鼓励以非托管方式使用资源,因为它可能会破坏平台旨在提供的企业功能,例如

可用性、安全性、可靠性和可扩展性。

检查此链接

于 2017-07-17T16:39:04.993 回答
-2

这是不正确的。应用服务器确实管理自己的线程池,但执行器框架创建的线程不由应用服务器管理。

于 2013-02-08T06:58:57.073 回答