我应该在请求中创建executorService还是在webapp上共享一个实例?

时间:2017-03-19 07:59:09

标签: java concurrency executorservice java.util.concurrent

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

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

1 个答案:

答案 0 :(得分:2)

  

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

没有。通常,您不应为每个Web请求(选项-1)实例化executorService,因为服务器很快就会耗尽内存,而且,即时创建线程池也很昂贵(耗时)。

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

您可以参考here了解线程池。