如何识别正确的java Executor?

时间:2013-06-24 13:26:21

标签: java asynchronous threadpool java-6 executors

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

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

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

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

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

  

我想过使用CachedThreadPool,但我的担心是太多了   创建线程会对它产生任何性能影响   应用

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

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