这可能是一个愚蠢的问题,但我是新手,我正在创建一个通过电子邮件发送通知的Web应用程序。为此我打算使用Executor Service。我在Executor Service中有点困惑,我应该直接使用(ExecutorService es = Executors.newFixedThreadPool(10))方法还是我必须在一个地方创建它并且每次都获得相同的ExecutorService对象?
答案 0 :(得分:2)
您肯定需要重用相同的ExecutorService对象。它可能不需要10个线程,1个就足够了。
不是将ExecutorService定义为静态字段(尽管你可以这样做),如果你使用的是Spring,或者作为单例中的字段,你可以将它定义为Spring服务:它应该有更多可预测的行为在webapp中。
话虽如此,理想情况下,您根本不应将此功能放在您的webapp中。 Web应用程序将部署在已经管理线程池的Web服务器上。理想情况下,每个应用程序应该只有一个线程池管理。关于新线程的某些事情在某些情况下可能会意外发生,例如终止。
理想情况下,您可以让您的网络应用程序以某种方式向另一个单独运行的应用程序发送有关需要发送的电子邮件的信息。队列可能是两者之间通信技术的理想选择。