只是想检查一下是否有人有更快的方法在Spring引导期间为Spring MVC设置TaskExecutor(使用自动配置)。这就是我到目前为止所做的:
@Bean
protected ThreadPoolTaskExecutor mvcTaskExecutor() {
ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
executor.setThreadNamePrefix("my-mvc-task-executor-");
executor.setCorePoolSize(5);
executor.setMaxPoolSize(200);
return executor;
}
@Bean
protected WebMvcConfigurer webMvcConfigurer() {
return new WebMvcConfigurerAdapter() {
@Override
public void configureAsyncSupport(AsyncSupportConfigurer configurer) {
configurer.setTaskExecutor(mvcTaskExecutor());
}
};
}
有没有人有更好/更快的方法来做到这一点?
-Joshua
答案 0 :(得分:2)
实现这一目标的一种方法是使用Spring的ConcurrentTaskExceptor类。这个类充当Spring的TaskExecutor和JDK的Executor之间的适配器。
@Bean
protected WebMvcConfigurer webMvcConfigurer() {
return new WebMvcConfigurerAdapter() {
@Override
public void configureAsyncSupport(AsyncSupportConfigurer configurer) {
configurer.setTaskExecutor(new ConcurrentTaskExecutor(Executors.newFixedThreadPool(5)));
}
};
}
上面的一个问题是您无法指定最大池大小。但是您始终可以创建一个新的工厂方法createThreadPool(int core, int max)
来获取可配置的线程池。