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

服務器之家:專注于服務器技術及軟件下載分享
分類導航

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

服務器之家 - 編程語言 - Java教程 - spring boot 使用@Async實現異步調用方法

spring boot 使用@Async實現異步調用方法

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

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

使用@Async實現異步調用

什么是”異步調用”與”同步調用”

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

“異步調用”

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

1. 開啟@Async注解

在Spring Boot主類添加@EnableAsync注解

2. 定義異步任務

定義Task類,創建三個處理函數分別模擬三個執行任務的操作,操作消耗時間隨機取(10秒內)。

?
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 //加入"異步調用"注解
  public void doTaskOne() throws InterruptedException {
    System.out.println("開始執行任務一");
    long start = System.currentTimeMillis();
    Thread.sleep(random.nextInt(10000));
    long end = System.currentTimeMillis();
    System.out.println("完成任務一,耗時:" + (end - start) + "毫秒");
  }
 
  @Async
  public void doTaskTwo() throws InterruptedException {
    System.out.println("開始執行任務二");
    long start = System.currentTimeMillis();
    Thread.sleep(random.nextInt(10000));
    long end = System.currentTimeMillis();
    System.out.println("完成任務二,耗時:" + (end - start) + "毫秒");
  }
 
  @Async
  public void doTaaskThree() throws InterruptedException {
    System.out.println("開始執行任務三");
    long start = System.currentTimeMillis();
    Thread.sleep(random.nextInt(10000));
    long end = System.currentTimeMillis();
    System.out.println("完成任務三,耗時:" + (end - start) + "毫秒");
  }
}

3. 創建Controller進行測試

注意@Autowired注入類,因為這個類已經被 Spring 管理了。如果使用 new 來獲得線程類將不會執行異步效果,這里涉及到在 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("開始執行Controller任務");
    long start = System.currentTimeMillis();
    TASK.doTaskOne();
    TASK.doTaskTwo();
    TASK.doTaaskThree();
    long end = System.currentTimeMillis();
    System.out.println("完成Controller任務,耗時:" + (end - start) + "毫秒");
    return "success";
  }
}

4. 多次調用

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

spring boot 使用@Async實現異步調用方法

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

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

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

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 手机亚洲第一页 | 亚洲不卡视频 | 韩国女主播一区二区视频 | 久久久精品国产免费A片胖妇女 | 日韩精品视频在线观看免费 | 国产成人久久 | 18岁的老处女| chinese圣水黄金调教 | 精精国产www视频在线观看免费 | youwu在线影院 | 精品国产日韩亚洲一区在线 | 男女车车好快的车车免费网站 | juy_661佐佐木明希在线播放 | 不知火舞被c视频在线播放 不卡一区二区三区卡 | 大乳孕妇一级毛片 | 精品午夜寂寞影院在线观看 | 日韩欧美a | 色先锋影音资源 | 91国语自产拍在线观看 | 欧美 亚洲 综合 卡通 另类 区 | 免费网址在线观看入口推荐 | 末代皇帝无删减版在线观看 | 亚洲高清国产品国语在线观看 | 热久久最新网址 | 国产中文字幕 | 免费观看国产视频 | 国产精品亚洲片在线va | 视频一区二区 村上凉子 | 男生的j桶女人屁免费视频 男生操男生 | 丝袜护士强制脚足取精 | 日本高清视频在线的 | 耽美调教高h | 羞羞影院午夜男女爽爽影院网站 | 午夜国产在线观看 | 美女的隐私视频免费看软件 | 草溜短视频 | 久久高清一级毛片 | 91看片淫黄大片欧美看国产片 | 女毛片 | 日日插插| 欧美一区二区三区久久久 |