zoukankan      html  css  js  c++  java
  • 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 "发送短信成功";    }}

    沫笙
  • 相关阅读:
    Logistic Regression
    如何把日期格式化为指定格式?
    JavaScript的自调用函数
    elementui 在原生方法参数里,添加参数
    原生js实现随着滚动条滚动,导航会自动切换的效果
    微信小程序-canvas绘制文字实现自动换行
    visual studio 和 sql server 的激活密钥序列号
    跨多个服务器访问不同数据库的表的方法
    数据库面试中常问的几个问题
    聚集索引和非聚集索引的区别
  • 原文地址:https://www.cnblogs.com/wendy-0901/p/14356732.html
Copyright © 2011-2022 走看看