1、底层技术是通过AOP技术给方法单独开辟了个线程进行数据处理。
2、service 方法上面增加 @Async,然后运行会发现一个问题,异步处理失败。
3、第2步失败,是因为需要在 启动类上增加一个注解 @EnableAsync 开启异步处理
4、如果在同一个service类中,一个方法调用 @Async 方法,异步会失效。下列情况会失效:
@Service @Slf4j public class UserService { public String getUser1(String name,String age){ return getUser2(name,age); } @Async public String getUser2(String name,String age){ System.out.println("2222222222222222"); try{ Thread.sleep(5000); }catch (Exception e){} User u=new User(); u.setName(name); u.setAge(age); System.out.println("333333333333333"); return "result:"+u.toString(); } }
5、第4出现的错误,可以将异步方法 放到另一个类中,然后在service类中引用此类。
6、@Async 注解是 new Thread,若无限制使用,对CPU会有很大影响,所以需要增加线程池。
定义线程池 配置类:ThreadPoolConfig.jav