• 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 "发送短信成功";    }}

    沫笙
  • 相关阅读:
    HTTP网页错误代码大全带解释
    记录一下手把手教您做电商网站
    C#中的Attribute
    C#中dynamic的正确用法
    【CSP】最大的矩形
    【CSP】字符与int
    C++数组初始化
    C++中输出字符到文本文档
    C++ 中时钟函数的使用
    各种函数的头文件
  • 原文地址:https://www.cnblogs.com/wendy-0901/p/14356732.html
Copyright © 2020-2023  润新知