咱们在实际项目中有些复杂运算、耗时操做,就能够利用多线程来充分利用CPU,提升系统吞吐量。SpringBoot对多线程支持很是好,对咱们的开发很是便捷。java
springboot 配置多线程须要两个注解git
@EnableAsyncgithub
在配置类中经过加@EnableAsync开启对异步任务的支持spring
@Asyncspringboot
在须要执行的方法上加@Async代表该方法是个异步方法,若是加在类级别上,则代表类全部的方法都是异步方法多线程
@Configuration @EnableAsync public class AsyncConfig implements AsyncConfigurer { @Override public Executor getAsyncExecutor() { ThreadPoolTaskExecutor taskExecutor = new ThreadPoolTaskExecutor(); //核心线程数 taskExecutor.setCorePoolSize(8); //最大线程数 taskExecutor.setMaxPoolSize(16); //队列大小 taskExecutor.setQueueCapacity(100); taskExecutor.initialize(); return taskExecutor; } }
@Service public class AsyncService { @Async public void executeAsync1() { Thread.sleep(20); System.out.println("异步任务::1"); } @Async public void executeAsync2() { System.out.println("异步任务::2"); } }
【注】这里的方法自动被注入使用上文配置的ThreadPoolTaskExecutor异步
@Resource private AsyncService asyncService; @Test public void asyncTest() throws InterruptedException { for (int i = 0; i < 10; i++) { asyncService.executeAsync1(); asyncService.executeAsync2(); } Thread.sleep(1000); }
异步任务::2 异步任务::2 异步任务::2 异步任务::2 异步任务::2 异步任务::2 异步任务::2 异步任务::1 异步任务::1 异步任务::1 异步任务::1 异步任务::1 异步任务::1 异步任务::1 异步任务::1 异步任务::2 异步任务::2 异步任务::2 异步任务::1 异步任务::1
【注】本文基于SpringBoot 2.0async
GitHub 链接ide
感谢《Spring Boot实战 JavaEE开发的颠覆者》测试