什么是异步异步任务和使用场景
举例:好比请求下单,需要校验用户的余额,以及是不是违法用户。
还有用户注册,发送验证码,我们需要发验证码,还需要保存数据库,这是一个串行的,发送耗时600ms,保存还需要100ms,这是一个耗时的操作。假如注册,用异步去发送邮件,好比开一个线程。这样就减少了用户的等待时间,也可以提高性能
适用于处理log、发送邮件、短信。。。等
下单接口>检查库存 1000
余额校验 1500
风控用户 1000
EnableAsync实战使用
Step1:启动类里面使用@EnableAsync注解开启功能,自动扫描
Step2:定义异步任务类并使用@Component标记组件被容器扫描,异步方法加上@Async
@Async:标记某个方法或某个类为异步的,如果将注解加到类上,那么每个方法就是异步的,如果加到某一个方法上表示这个方法是异步的
@Component//交给spring扫描
@Async
public class AsyncTask {
//模拟延迟时间
public void task1(){
try {
Thread.sleep(4000L);
}catch (InterruptedException e){
e.printStackTrace();