这可能是一个愚蠢的问题,但我是这方面的新手,我正在创建一个网络应用程序,其中通过电子邮件发送通知。为此,我计划使用执行者服务。我对 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/