我应该在请求中创建 executorService 还是在 Web 应用程序中共享一个实例?

0cd*_*0cd 5 java concurrency executorservice java.util.concurrent

我正在向基于 Jersey 的 Web 服务添加一个新端点。支持端点的逻辑需要对另一个服务进行 10 到 50 次调用。这些调用是独立的并且可以并行化,因此我正在考虑使用执行器服务来跨多个线程分配工作。

我想知道是否应该为每个请求实例化一个 executorService 或者是否应该在 web 应用程序中存在一个共享的 executorService 实例。在后一种情况下,我将如何决定它应该运行的线程数?

dev*_*per 5

我想知道是否应该为每个请求实例化一个 executorService,或者是否应该在 Web 应用程序中存在一个共享的 executorService 实例。在后一种情况下,我将如何决定它应该运行的线程数?

不。一般来说,您不应该executorService为每个 Web 请求(选项 1)实例化 ,因为服务器很快就会耗尽内存,而且动态创建线程池的成本很高(耗时)。

因此,您需要executorService在服务器启动期间创建共享实例(选项2),并根据您的要求配置线程池大小并进行性能测试。

你可以参考这里来了解线程池。