springboot Async多线程
Async是springboot集成多线程
注意:调用 @Async方法时不能在同一个类中,不然会异步调用会不生效
可以定义多个线程池,指定线程池异步调用 @Async("myAsyncPool")
也可以不指定,使用默认的@Async
@Configuration @EnableAsync public class AsyncConfig { @Bean("myAsyncPool") public Executor myTaskAsyncPool() { /** * corePoolSize:线程池维护线程的最少数量 * keepAliveSeconds:允许的空闲时间 * maxPoolSize:线程池维护线程的最大数量 * queueCapacity:缓存队列 * rejectedExecutionHandler:对拒绝task的处理策略 */ ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor(); executor.setCorePoolSize(5); executor.setMaxPoolSize(200); executor.setAwaitTerminationSeconds(60); executor.setQueueCapacity(120); executor.setKeepAliveSeconds(200); executor.setThreadNamePrefix("MyExecutor-"); // rejection-policy:当pool已经达到max size的时候,如何处理新任务 // CALLER_RUNS:不在新线程中执行任务,而是由调用者所在的线程来执行 executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy()); executor.initialize(); return executor; } }
使用
public class AsyncService { @Async("myAsyncPool") void test(){ } }
posted on 2019-06-03 16:34 xiaogui918 阅读(369) 评论(0) 编辑 收藏 举报