springBoot---使用@Async实现异步调用

1.基础:@Async实际上就是多线程封装的

2.我们看看实现的理论,异步线程执行方法有可能会非常消耗cpu的资源,所以大的项目建议使用Mq异步实现

 

 

 3.我们先看看单线程的代码

 

 

 我们看看单线程运行的结果

 

 

 

 

 

 package demo.controller;

 

import lombok.extern.slf4j.Slf4j;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RestController;

 

@RestController

@Slf4j

public class MemberService {

    @RequestMapping("/addMember")

    public String addMember(){

        log.info("模拟插入到数据库0001");

        //发送短信

        sms();

        log.info("用户注册成功0004");

        return "用户注册成功";

    }

    public String sms(){

        log.info("<0002>");

        try{

            log.info("正在发送短信");

            Thread.sleep(3000);

        }catch(Exception e){

 

        }

        log.info("<0003>");

        return "发送短信成功";

    }

}

 

 

4.我们改造一下成多线程

 

 5.运行看看效果

package demo.controller;

 

import lombok.extern.slf4j.Slf4j;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RestController;

 

@RestController

@Slf4j

public class MemberService {

    @RequestMapping("/addMember")

    public String addMember(){

        log.info("模拟插入到数据库0001");

        //发送短信

        new Thread(new Runnable(){

            @Override

            public void run(){

                sms();

            }

        }).start();

        log.info("用户注册成功0004");

        return "用户注册成功";

    }

    public String sms(){

        log.info("<0002>");

        try{

            log.info("正在发送短信");

            Thread.sleep(3000);

        }catch(Exception e){

 

        }

        log.info("<0003>");

        return "发送短信成功";

    }

}

 

 

 

 

 

 

package demo.controller;
import lombok.extern.slf4j.Slf4j;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;
@RestController@Slf4jpublic class MemberService {    @RequestMapping("/addMember")    public String addMember(){        log.info("模拟插入到数据库0001");        //发送短信        sms();        log.info("用户注册成功0004");        return "用户注册成功";    }    public String sms(){        log.info("<0002>");        try{            log.info("正在发送短信");            Thread.sleep(3000);        }catch(Exception e){
        }        log.info("<0003>");        return "发送短信成功";    }}

 

posted @ 2021-02-01 15:09  沫笙*  阅读(202)  评论(0编辑  收藏  举报