Java 确定ThreadPoolTaskExecutor的配置

Java 确定ThreadPoolTaskExecutor的配置,java,spring,Java,Spring,我的应用程序中的一组任务(功能不同)需要异步执行,并且可以合并 看起来Spring的ThreadPoolTaskExecutor是我可以用来从框架本身(而不是自己创建)获得这样一个执行器的工具。但是,我不确定如何确定执行器的最佳配置,即“最大池大小”、“队列容量”等设置。做出此决定时需要考虑哪些因素以及哪些设置最有效?我建议您仔细阅读,因为如果您想避免出现问题,了解此类池在排队方面的行为非常重要。JDK提供了一些工厂方法,这些方法应该为您提供正确配置的池。使用这些方法,或者深入研究它们的源代码,

我的应用程序中的一组任务(功能不同)需要异步执行,并且可以合并


看起来Spring的
ThreadPoolTaskExecutor
是我可以用来从框架本身(而不是自己创建)获得这样一个执行器的工具。但是,我不确定如何确定执行器的最佳配置,即“最大池大小”、“队列容量”等设置。做出此决定时需要考虑哪些因素以及哪些设置最有效?

我建议您仔细阅读,因为如果您想避免出现问题,了解此类池在排队方面的行为非常重要。JDK提供了一些工厂方法,这些方法应该为您提供正确配置的池。使用这些方法,或者深入研究它们的源代码,以了解这些配置使用了哪些参数(大小、队列类型等)。

我确实阅读了相关的Javadoc,但这些只是解释了这些配置的含义。它们不告诉何时以及如何使用/调整这些,这就是我所寻找的。设置取决于您提交的任务类型(IO限制、CPU限制)、您想要的目标(最小延迟、最大CPU使用率?),处理器数量,应用程序中的其他线程,我建议您在实践中阅读Java并发,其中有一整章是关于这些注意事项的。