0
点赞
收藏
分享

微信扫一扫

不自定义异步方法的线程池默认使用SimpleAsyncTaskExecutor


如果不自定义异步方法的线程池默认使用SimpleAsyncTaskExecutor。SimpleAsyncTaskExecutor:不是真的线程池,这个类不重用线程,每次调用都会创建一个新的线程。并发大的时候会产生严重的性能问题。

定义通用线程池

@EnableAsync
@Configuration
public class ThreadTestConfig {
@Bean
public Executor taskExecutor() {
ThreadPoolTaskExecutor pool = new ThreadPoolTaskExecutor();
pool.setCorePoolSize(5); //线程池活跃的线程数
pool.setMaxPoolSize(10); //线程池最大活跃的线程数
pool.setWaitForTasksToCompleteOnShutdown(true);
pool.setThreadNamePrefix("lalala");
return pool;
}
}

@Async默认使用Bean Name为executor的线程池。也可以根据Bean Name指定特定线程池

@Async("taskExecuter")
public void asyncMethod() {
sleep(10);
System.out.println("async");
}

举报

相关推荐

0 条评论