<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                ### 使用@Async實現異步調用 啟動加上@EnableAsync,需要執行異步方法上加入@Async 在方法加上@Async之后 底層使用多線程技術 ~~~ @Service @Slf4j public class MemberService { @Async//相當于這個方法重新開辟了單獨線程進行執行 public String addMemberAndEmail(){ log.info("2"); try { Thread.sleep(5000); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } log.info("3"); return "hello"; } } ~~~ ~~~ @Slf4j @RestController public class MemberController { @Autowired private MemberService memberService; @RequestMapping("/addMemberAndEmail") public String addMemberAndEmail(){ log.info("1"); String result=memberService.addMemberAndEmail(); log.info("4"); return result; } } ~~~ 運行結果 ![](https://box.kancloud.cn/fc07f4787186ec9caac41d983d531512_929x162.png) ~~~ 啟動類上要加@EnableAsync注解 @EnableAsync//開啟異步調用 public class AppConfig {} ~~~ ~~~ 實現原理 @Service @Slf4j public class MemberService { //@Async//相當于這個方法重新開辟了單獨線程進行執行 //思路:使用AOP技術在運行時創建一個單獨線程進行執行 public String addMemberAndEmail(){ new Thread(new Runnable() { @Override public void run() { // TODO Auto-generated method stub log.info("2"); try { Thread.sleep(5000); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } log.info("3"); } }).start(); return "hello"; // log.info("2"); // try { // Thread.sleep(5000); // } catch (InterruptedException e) { // // TODO Auto-generated catch block // e.printStackTrace(); // } // log.info("3"); // return "hello"; } } ~~~
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看