Spring的ThreadPoolTask​​Executor的池大小问题(Spring Framework 4.3.9.RELEASE API)

时间:2017-07-19 11:07:54

标签: java spring

我正在对Spring应用程序进行一些负载测试,现在我对ThreadPoolTaskExecutor的配置感到有点困惑。内部使用的ThreadPoolExecutor文档将corePoolSize描述为

  

要保留在池中的线​​程数,即使它们处于空闲状态

maximumPoolSize

  

池中允许的最大线程数。

这显然意味着maximumPoolSize限制了数量 池中的线程。但相反,限制似乎是由 corePoolSize。实际上我只用corePoolSize配置了100,让maximumPoolSize取消配置(这意味着使用了默认值:Integer.MAX_VALUE = 2147483647)当我运行负载测试时,我可以看到(通过查看日志) ),执行的工作线程从worker-1worker-100编号。因此,在这种情况下,线程池大小受corePoolSize限制。即使我将maximumPoolSize设置为200或300,结果也完全相同。为什么maximumPoolSize的值对我的情况没有影响?

@Bean
public TaskExecutor taskExecutor() {
  ThreadPoolTaskExecutor taskExecutor = new ThreadPoolTaskExecutor();
  taskExecutor.setCorePoolSize(100);
  taskExecutor.setThreadNamePrefix("worker-");
  return taskExecutor;
}

0 个答案:

没有答案