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

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

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

服務(wù)器之家 - 編程語言 - Java教程 - spring boot 使用@Async實現(xiàn)異步調(diào)用方法

spring boot 使用@Async實現(xiàn)異步調(diào)用方法

2020-09-19 18:57陽光早已褪色 Java教程

本篇文章主要介紹了spring boot 使用@Async實現(xiàn)異步調(diào)用方法,具有一定的參考價值,有興趣的可以了解一下。

使用@Async實現(xiàn)異步調(diào)用

什么是”異步調(diào)用”與”同步調(diào)用”

“同步調(diào)用”就是程序按照一定的順序依次執(zhí)行,,每一行程序代碼必須等上一行代碼執(zhí)行完畢才能執(zhí)行;”異步調(diào)用”則是只要上一行代碼執(zhí)行,無需等待結(jié)果的返回就開始執(zhí)行本身任務(wù)。
通常情況下,”同步調(diào)用”執(zhí)行程序所花費的時間比較多,執(zhí)行效率比較差。所以,在代碼本身不存在依賴關(guān)系的話,我們可以考慮通過”異步調(diào)用”的方式來并發(fā)執(zhí)行。

“異步調(diào)用”

spring boot 框架中,只要提過@Async注解就能獎普通的同步任務(wù)改為異步調(diào)用任務(wù)。
注意: @Async所修飾的函數(shù)不要定義為static類型,這樣異步調(diào)用不會生效

1. 開啟@Async注解

在Spring Boot主類添加@EnableAsync注解

2. 定義異步任務(wù)

定義Task類,創(chuàng)建三個處理函數(shù)分別模擬三個執(zhí)行任務(wù)的操作,操作消耗時間隨機取(10秒內(nèi))。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
@Component
public class Task {
 
  //定義一個隨機對象.
  public static Random random =new Random();
 
  @Async //加入"異步調(diào)用"注解
  public void doTaskOne() throws InterruptedException {
    System.out.println("開始執(zhí)行任務(wù)一");
    long start = System.currentTimeMillis();
    Thread.sleep(random.nextInt(10000));
    long end = System.currentTimeMillis();
    System.out.println("完成任務(wù)一,耗時:" + (end - start) + "毫秒");
  }
 
  @Async
  public void doTaskTwo() throws InterruptedException {
    System.out.println("開始執(zhí)行任務(wù)二");
    long start = System.currentTimeMillis();
    Thread.sleep(random.nextInt(10000));
    long end = System.currentTimeMillis();
    System.out.println("完成任務(wù)二,耗時:" + (end - start) + "毫秒");
  }
 
  @Async
  public void doTaaskThree() throws InterruptedException {
    System.out.println("開始執(zhí)行任務(wù)三");
    long start = System.currentTimeMillis();
    Thread.sleep(random.nextInt(10000));
    long end = System.currentTimeMillis();
    System.out.println("完成任務(wù)三,耗時:" + (end - start) + "毫秒");
  }
}

3. 創(chuàng)建Controller進行測試

注意@Autowired注入類,因為這個類已經(jīng)被 Spring 管理了。如果使用 new 來獲得線程類將不會執(zhí)行異步效果,這里涉及到在 Spring 中使用多線程。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
@Controller
public class TaskController {
 
  @Autowired
  private Task TASK;
 
  @ResponseBody
  @RequestMapping("/task")
  public String task() throws Exception {
    System.out.println("開始執(zhí)行Controller任務(wù)");
    long start = System.currentTimeMillis();
    TASK.doTaskOne();
    TASK.doTaskTwo();
    TASK.doTaaskThree();
    long end = System.currentTimeMillis();
    System.out.println("完成Controller任務(wù),耗時:" + (end - start) + "毫秒");
    return "success";
  }
}

4. 多次調(diào)用

訪問 http://localhost:8080/task 截圖:

spring boot 使用@Async實現(xiàn)異步調(diào)用方法

項目參考地址: https://github.com/FunriLy/springboot-study/tree/master/%E6%A1%88%E4%BE%8B7

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

原文鏈接:http://blog.csdn.net/u011244202/article/details/54864528

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 成人高辣h视频一区二区在线观看 | 免费国产一级观看完整版 | 日本三级欧美三级人妇英文 | 欧美一级艳片视频免费观看 | 天堂资源在线www中文 | 荡娃艳妇有声小说 | 免费一级国产生活片 | 亚洲七七久久综合桃花 | 午夜精品网| 超时空要爱国语完整版在线 | 日韩欧美成末人一区二区三区 | 都市风流贵妇激情 | 性白俄罗斯高清xxxxx | 国产成人精品一区 | 国产精品视频久久久久 | 毛片免费视频观看 | 97色伦在线观看 | 星空无限传媒xk8129 | 亚洲国内精品 | 亚洲天堂999 | 果冻传媒九一制片厂 | 亚洲第99页 | 日本一区二区三区久久精品 | 国产成人综合一区精品 | 九九精品视频一区二区三区 | 好姑娘在线观看完整版免费 | 色婷婷综合久久久 | 国产极品美女在线 | 亚洲视频免费在线看 | 亚洲天堂成人在线观看 | 欧美成人精品福利网站 | 国色天香 社区视频 | 欧美在线视频一区 | 男人天堂色男人 | 色人阁小说 | 天天摸天天操天天爽 | 996热精品视频在线观看 | 国产精品秒播无毒不卡 | 国产品精人成福利视频 | 精品日本一区二区 | 国产高清路线一路线二2022 |