java - 我想使用执行器线程池在我设计的 Web 应用程序中通过电子邮件发送运行时通知

标签 java multithreading concurrency java.util.concurrent

这可能是一个愚蠢的问题,但我是这方面的新手,我正在创建一个网络应用程序,其中通过电子邮件发送通知。为此,我计划使用执行者服务。我对 Executor Service 有点困惑,我应该直接使用 (ExecutorService es =Executors.newFixedThreadPool(10)) 方法还是必须在一个地方创建它并每次都获取相同的 ExecutorService 对象?

最佳答案

您肯定需要重用相同的 ExecutorService 对象。而且它可能不需要 10 个线程,1 个就足够了。

您可以将 ExecutorService 定义为静态字段(尽管您可以这样做),如果您使用 Spring,则可以将其定义为 Spring 服务,或者定义为单例中的字段:这应该具有更可预测的行为在网络应用程序中。

话虽如此,理想情况下您根本不应该将此功能放在您的网络应用程序中。 Web 应用程序将部署在已管理线程池的 Web 服务器上。理想情况下,每个应用程序应该只有一个线程池管理。在某些情况下,有关新线程的某些事情可能会意外工作,例如其终止。

理想情况下,您可以让您的网络应用程序以某种方式将有关需要发送的电子邮件的信息发送到另一个单独运行的应用程序并专用于此目的。队列可能是两者之间通信技术的理想选择。

关于java - 我想使用执行器线程池在我设计的 Web 应用程序中通过电子邮件发送运行时通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23303042/

相关文章:

Java并发/网络方法

java - 如何在windows下更改Maven的M2_REPO

iphone - 在发布版本中,Boost.Thread 线程未在 iPhone/iPad 上启动

java - 如何在java正则表达式中使用嵌套非捕获组

c++ - 如何将线程放入 C++ 智能指针中?

java - 如何编写线程安全操作并使它们原子化?

c++ - 具有 1 个写入器和 N 个并发读取器的实时数据流

java - ThreadPoolExecutor 应用程序未完成

java - Java中的数组索引属性

java - 如何正确模拟一个简单的 CRUD 界面?