欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

springboot 異步調用的實現(xiàn)方法

 更新時間:2019年04月12日 09:33:30   作者:lijingyulee  
這篇文章主要介紹了springboot 異步調用的實現(xiàn)方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

說異步調用前,我們說說它對應的同步調用。通常開發(fā)過程中,一般上我們都是同步調用,即:程序按定義的順序依次執(zhí)行的過程,每一行代碼執(zhí)行過程必須等待上一行代碼執(zhí)行完畢后才執(zhí)行。而異步調用指:程序在執(zhí)行時,無需等待執(zhí)行的返回值可繼續(xù)執(zhí)行后面的代碼。顯而易見,同步有依賴相關性,而異步沒有,所以異步可并發(fā)執(zhí)行,可提高執(zhí)行效率,在相同的時間做更多的事情。

同步

程序按照定義順序依次執(zhí)行,每一行程序都必須等待上一行程序執(zhí)行完成之后才能執(zhí)行,就是在發(fā)出一個功能調用時,在沒有得到結果之前,該調用就不返回。

異步

程序在順序執(zhí)行時,不等待異步調用的語句返回結果就執(zhí)行后面的程序,當一個異步過程調用發(fā)出后,調用者不能立刻得到結果。

同步代碼

Service層:

public void test() throws InterruptedException {
    Thread.sleep(2000);
    for (int i = 0; i < 1000; i++) {
      System.out.println("i = " + i);
    }
  }

Controller層:

  @GetMapping("test")
  public String test() {
    try {
      Thread.sleep(1000);
      System.out.println("主線程開始");
      for (int j = 0; j < 100; j++) {
        System.out.println("j = " + j);
      }
      asyncService.test();
      System.out.println("主線程結束");
      return "async";
    } catch (InterruptedException e) {
      e.printStackTrace();
      return "fail";
    }
  }

瀏覽器中請求 http://localhost:8080/test

控制臺打印順序:

  • 主線程開始
  • 打印j循環(huán)
  • 打印i循環(huán)
  • 主線程結束

異步代碼

在Service層的test方法上加上@Async注解,同時為了是異步生效在啟動類上加上@EnableAsync注解

Service層:

 @Async
  public void test() throws InterruptedException {
    Thread.sleep(2000);
    for (int i = 0; i < 1000; i++) {
      System.out.println("i = " + i);
    }
  }

Controller不變,啟動類加上@EnableAsync:

@SpringBootApplication
@EnableAsync
public class AsyncApplication {
  public static void main(String[] args) {
    SpringApplication.run(AsyncApplication.class, args);
  }
}

再次請求打印順序如下:

  1. 主線程開始
  2. 打印j循環(huán)
  3. 主線程結束
  4. 打印i循環(huán)

代碼: async

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • SpringBoot擴展SpringMVC原理并實現(xiàn)全面接管

    SpringBoot擴展SpringMVC原理并實現(xiàn)全面接管

    這篇文章主要介紹了SpringBoot擴展SpringMVC原理并實現(xiàn)全面接管,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-11-11
  • Java私有構造函數(shù)作用原理解析

    Java私有構造函數(shù)作用原理解析

    這篇文章主要介紹了Java私有構造函數(shù)作用原理解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-12-12
  • Java日期時間字符串和毫秒相互轉換的方法

    Java日期時間字符串和毫秒相互轉換的方法

    這篇文章主要為大家詳細介紹了Java日期時間字符串和毫秒相互轉換的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-12-12
  • Spring Boot啟動banner定制的步驟詳解

    Spring Boot啟動banner定制的步驟詳解

    這篇文章主要給大家介紹了關于Spring Boot啟動banner定制的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧。
    2018-03-03
  • Java設計模式之裝飾者模式詳解和代碼實例

    Java設計模式之裝飾者模式詳解和代碼實例

    這篇文章主要介紹了Java設計模式之裝飾者模式詳解和代碼實例,Decorator模式(別名Wrapper):動態(tài)將職責附加到對象上,若要擴展功能,裝飾者提供了比繼承更具彈性的代替方案,需要的朋友可以參考下
    2014-09-09
  • java發(fā)送HttpClient請求及接收請求結果過程的簡單實例

    java發(fā)送HttpClient請求及接收請求結果過程的簡單實例

    下面小編就為大家?guī)硪黄猨ava發(fā)送HttpClient請求及接收請求結果過程的簡單實例。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-11-11
  • 深入理解Java設計模式之裝飾模式

    深入理解Java設計模式之裝飾模式

    這篇文章主要介紹了JAVA設計模式之裝飾模式的的相關資料,文中示例代碼非常詳細,供大家參考和學習,感興趣的朋友可以了解下
    2021-11-11
  • 阿里巴巴 Sentinel + InfluxDB + Chronograf 實現(xiàn)監(jiān)控大屏

    阿里巴巴 Sentinel + InfluxDB + Chronograf 實現(xiàn)監(jiān)控大屏

    這篇文章主要介紹了阿里巴巴 Sentinel + InfluxDB + Chronograf 實現(xiàn)監(jiān)控大屏,本文通過實例代碼給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-09-09
  • java+SpringBoot設計實現(xiàn)評教系統(tǒng)

    java+SpringBoot設計實現(xiàn)評教系統(tǒng)

    這篇文章主要介紹了用過Java SpringBoot實現(xiàn)一個簡單的評價系統(tǒng),可以做到學生管理、教師管理、評教管理、指標管理、課程管理等。感興趣的可以了解一下
    2021-12-12
  • java編程實現(xiàn)楊輝三角兩種輸出結果實例代碼

    java編程實現(xiàn)楊輝三角兩種輸出結果實例代碼

    這篇文章主要介紹了java編程實現(xiàn)楊輝三角兩種輸出結果實例代碼,具有一定借鑒價值,需要的朋友可以參考下。
    2017-12-12

最新評論