我们需要做一些异步任务处理,其中大约30-40个请求将同时到来,每个请求将启动一个异步任务,大约需要7-8秒才能完成。
如果java executorservice已被确定为执行此类任务,那么用于此目的的空闲类型的执行器是什么?
我想过使用CachedThreadPool,但我担心的是,如果创建了太多的线程,是否会对应用程序的性能产生影响?
另一种选择是使用FixedThreadPool,但我正在努力考虑一个空闲的无线程,它应该用来实例化……对于这样的场景,推荐的执行者是什么?或者我们如何找到正确的执行者?
发布于 2013-06-24 21:39:41
我想过使用CachedThreadPool,但我担心的是,如果创建了太多的线程,会不会对应用程序的性能产生影响?
您需要测试应用程序的性能影响。如果它们都不适合应用程序或者有一些问题,那么您可以使用定制的线程池执行器java.util.concurrent.ThreadPoolExecutor
您可以根据需要进行自定义,配置核心池大小,配置阻塞队列。将使用阻塞队列,当池大小达到时,任务将排队。
发布于 2013-06-24 21:37:18
我认为您的研究仅限于Executors.*工厂方法。你应该回顾一下ThreadPoolExecutor的构造函数的范围,你会发现线程池的最大大小限制等等。
https://stackoverflow.com/questions/17276648
复制相似问题