1

我们需要做一些异步任务处理,其中大约 30-40 个请求将同时到来,每个请求将启动一个异步任务,大约需要 7-8 秒才能完成。

如果已确定 java executorservice 来执行此类任务,那么用于此目的的空闲类型的 executor 是什么?

我想过使用 CachedThreadPool 但我担心如果创建了太多线程会对应用程序产生任何性能影响吗?

另一种选择是使用 FixedThreadPool 但我很难想到应该用它实例化的空闲无线程......对于这种情况推荐的执行程序是什么,或者我们如何找到合适的执行程序?

4

2 回答 2

1

我认为您将研究限制在Executors.*工厂方法上。您应该查看构造函数的范围ThreadPoolExecutor,您会发现最大线程池大小限制等。

于 2013-06-24T13:37:18.237 回答
0

我想过使用 CachedThreadPool 但我担心如果创建了太多线程会对应用程序产生任何性能影响吗?

您需要测试应用程序的性能影响。如果它们都不适合应用程序或有一些问题,那么您可以使用自定义线程池执行器 java.util.concurrent.ThreadPoolExecutor

您可以根据需要自定义配置核心池大小,配置阻塞队列。将使用阻塞队列,当达到池大小时,任务将排队。

于 2013-06-24T13:39:40.530 回答