我们需要进行一些异步任务处理,大约30-40个请求将同时到来,每个请求将初始化一个异步任务,大约需要7-8秒才能完成。
如果已经确定java执行器服务来执行这样的任务,那么用于这种目的的执行器的空闲类型是什么?
我曾想过使用CachedThreadPool,但我担心的是,如果创建了太多线程,会对应用程序的性能产生影响吗?
另一种选择是使用FixedThreadPool,但我很难想出一个应该用它实例化的空闲无线程。。。对于这种情况,建议的执行人是什么?或者我们如何找到合适的执行人?
我认为您的研究仅限于Executors.*
工厂方法。您应该查看ThreadPoolExecutor
的构造函数的范围,您会发现最大线程池大小限制等。
我曾想过使用CachedThreadPool,但我担心如果太多线程是否会对应用
您需要测试应用程序的性能影响。如果它们都不适合应用程序,或者有一些问题,那么您可以使用定制的线程池执行器java.util.concurrent.ThreadPoolExecutor
您可以根据需要进行自定义,配置核心池大小,配置阻塞队列。当达到池大小时,将使用阻塞队列,并对任务进行排队。