最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時間:2017年04月26日 14:43:55   作者:陽光早已褪色  
本篇文章主要介紹了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))。

@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 中使用多線程。

@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 截圖:

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

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

相關(guān)文章

  • java并發(fā)編程包JUC線程同步CyclicBarrier語法示例

    java并發(fā)編程包JUC線程同步CyclicBarrier語法示例

    這篇文章主要為大家介紹了java并發(fā)編程工具包JUC線程同步CyclicBarrier語法使用示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-03-03
  • 阿里的一道Java并發(fā)面試題詳解

    阿里的一道Java并發(fā)面試題詳解

    這篇文章主要介紹了阿里的一道Java并發(fā)面試題詳解,網(wǎng)絡(luò)、并發(fā)相關(guān)的知識,相對其他一些編程知識點更難一些,主要是不好調(diào)試并且涉及內(nèi)容太多 !,需要的朋友可以參考下
    2019-06-06
  • Java實現(xiàn)真假隨機數(shù)詳解

    Java實現(xiàn)真假隨機數(shù)詳解

    偽隨機數(shù)和真隨機數(shù)是計算機科學和統(tǒng)計學中非常重要的概念,理解它們之間的差異有助于選擇合適的隨機數(shù)生成方案,本文將使用Java實現(xiàn)真假隨機數(shù),感興趣的可以了解下
    2024-11-11
  • Spring boot中PropertySource注解的使用方法詳解

    Spring boot中PropertySource注解的使用方法詳解

    這篇文章主要給大家介紹了關(guān)于Spring boot中PropertySource注解的使用方法,文中通過示例代碼介紹的非常詳細,對大家學習或者使用Spring boot具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧。
    2017-12-12
  • ElasticSearch不停機重建索引延伸思考及優(yōu)化詳解

    ElasticSearch不停機重建索引延伸思考及優(yōu)化詳解

    這篇文章主要為大家介紹了ElasticSearch不停機重建索引延伸思考及優(yōu)化詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-02-02
  • Spring 注入static屬性值方式

    Spring 注入static屬性值方式

    文本介紹了Spring如何從屬性文件給static屬性注入值,在寫一些與配置相關(guān)的工具類時常用。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • MyBatis-Plus將字段修改為空值的解決方案

    MyBatis-Plus將字段修改為空值的解決方案

    這篇文章主要介紹了MyBatis-Plus將字段修改為空值的解決方案,本文給大家分享三種常用的解決方案,感興趣的朋友一起看看吧
    2023-12-12
  • Java StringBuffer類與StringBuilder類用法實例小結(jié)

    Java StringBuffer類與StringBuilder類用法實例小結(jié)

    這篇文章主要介紹了Java StringBuffer類與StringBuilder類用法,結(jié)合實例形式總結(jié)分析了Java StringBuffer類與StringBuilder類的功能、原理及添加、刪除、替換、截取等操作實現(xiàn)技巧,需要的朋友可以參考下
    2019-03-03
  • Java中if...else語句使用的學習教程

    Java中if...else語句使用的學習教程

    這篇文章主要介紹了Java中if...else語句使用的學習教程,是Java入門學習中的基礎(chǔ)知識,需要的朋友可以參考下
    2015-11-11
  • 使用easyexcel導出的excel文件,使用poi讀取時異常處理方案

    使用easyexcel導出的excel文件,使用poi讀取時異常處理方案

    這篇文章主要介紹了使用easyexcel導出的excel文件,使用poi讀取時異常處理方案,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-12-12

最新評論

台山市| 八宿县| 白水县| 中西区| 濮阳市| 镇雄县| 普格县| 金门县| 丹寨县| 巴林左旗| 内黄县| 南宁市| 咸阳市| 三都| 谢通门县| 岑巩县| 墨脱县| 大邑县| 许昌县| 秦皇岛市| 湖南省| 南召县| 庄河市| 邹城市| 威远县| 漳浦县| 和田市| 毕节市| 平谷区| 阳泉市| 丰原市| 建湖县| 潼关县| 中江县| 涟水县| 朝阳市| 柳江县| 大冶市| 锡林浩特市| 保山市| 当阳市|