咱們在實際項目中有些複雜運算、耗時操做,就能夠利用多線程來充分利用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開發的顛覆者》測試