一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務(wù)器之家 - 編程語言 - Java教程 - springboot 異步調(diào)用的實(shí)現(xiàn)方法

springboot 異步調(diào)用的實(shí)現(xiàn)方法

2021-07-31 12:17lijingyulee Java教程

這篇文章主要介紹了springboot 異步調(diào)用的實(shí)現(xiàn)方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧

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

同步

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

異步

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

同步代碼

service層:

?
1
2
3
4
5
6
public void test() throws interruptedexception {
    thread.sleep(2000);
    for (int i = 0; i < 1000; i++) {
      system.out.println("i = " + i);
    }
  }

controller層:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
@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("主線程結(jié)束");
    return "async";
  } catch (interruptedexception e) {
    e.printstacktrace();
    return "fail";
  }
}

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

控制臺打印順序:

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

異步代碼

在service層的test方法上加上@async注解,同時(shí)為了是異步生效在啟動類上加上@enableasync注解

service層:

?
1
2
3
4
5
6
7
@async
 public void test() throws interruptedexception {
   thread.sleep(2000);
   for (int i = 0; i < 1000; i++) {
     system.out.println("i = " + i);
   }
 }

controller不變,啟動類加上@enableasync:

?
1
2
3
4
5
6
7
@springbootapplication
@enableasync
public class asyncapplication {
  public static void main(string[] args) {
    springapplication.run(asyncapplication.class, args);
  }
}

再次請求打印順序如下:

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

代碼: async

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持服務(wù)器之家。

原文鏈接:https://segmentfault.com/a/1190000018838942

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 日本护士xxxx视频 | 天天做天天爰夜夜爽 | 狠狠色婷婷狠狠狠亚洲综合 | 韩日一区二区三区 | 好男人资源免费播放 | 青草青草伊人精品视频 | 日韩先锋 | 小女生RAPPER入口 | 国产精品夜色视频一级区 | 免费观看国产精品 | 亚洲 欧美 国产 综合 播放 | 精品久久成人免费第三区 | 欧美日韩国产超高清免费看片 | 放荡女小洁的性日记 | 三星w999 | 精品卡1卡2卡三卡免费视频 | 日本一区二区不卡久久入口 | 性姿势女人嗷嗷叫图片 | 四虎影视永久在线精品免费 | 亚洲免费视频在线观看 | 久久国内精品 | 极品丝袜老师h系列全文阅读 | 午夜AV内射一区二区三区红桃视 | 国产亚洲福利一区二区免费看 | 精品精品久久宅男的天堂 | 齐天大性之七仙女欲春迅雷链接 | 狠狠澡 | 青青草国产免费国产是公开 | 色国产精品 | 亚洲国产欧美另类va在线观看 | 69萝莉| 男人操美女逼视频 | chinese老太granny| 狠狠香蕉| 欧美老肥妇bbb | 国产成人一区二区三区影院免费 | 韩国漂亮美女三级在线观看 | 情人我吃糖果小说 | 亚洲视频免费在线看 | 87影院在线观看视频在线观看 | wwwav视频|