激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

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

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

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 91精品国产91久久久久久丝袜 | 日本a∨精品中文字幕在线 狠狠干精品视频 | 成人福利视频导航 | 九九黄色 | 久久国产一二区 | 天天草夜夜爽 | 法国性xxx精品hd专区 | 蜜桃网在线观看 | h网站在线观看 | 成人 精品 | 成品片a免费直接观看 | 久久成人黄色 | 成人免费一区二区三区视频网站 | 羞羞答答tv | 国产精品入口夜色视频大尺度 | 777sesese| 91看片在线观看视频 | 亚洲精品aa | 免费观看国产精品视频 | 欧美韩国日本在线 | 久久恋| 中文区中文字幕免费看 | 黄污污网站 | 国产精品一区二区三区在线看 | 黄色av网站免费 | 欧美性生交xxxxx久久久缅北 | 在线播放h | 国产视频在线一区 | 免费黄色小视频网站 | av观看国产 | 久久久国产电影 | www.17c亚洲蜜桃 | 538任你躁在线精品视频网站 | 国产一区二区久久精品 | 在线播放av片 | 亚洲第一成网站 | av电影在线免费 | 成人毛片免费看 | 久久精品亚洲一区二区三区观看模式 | 亚洲第一成人在线视频 | 91网站在线观看视频 |