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

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

 更新時(shí)間:2017年04月26日 14:43:55   作者:陽光早已褪色  
本篇文章主要介紹了spring boot 使用@Async實(shí)現(xiàn)異步調(diào)用方法,具有一定的參考價(jià)值,有興趣的可以了解一下。

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

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

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

“異步調(diào)用”

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

1. 開啟@Async注解

在Spring Boot主類添加@EnableAsync注解

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

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

@Component
public class Task {

  //定義一個(gè)隨機(jī)對象.
  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ù)一,耗時(shí):" + (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ù)二,耗時(shí):" + (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ù)三,耗時(shí):" + (end - start) + "毫秒");
  }
}

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

注意@Autowired注入類,因?yàn)檫@個(gè)類已經(jīng)被 Spring 管理了。如果使用 new 來獲得線程類將不會(huì)執(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ù),耗時(shí):" + (end - start) + "毫秒");
    return "success";
  }
}

4. 多次調(diào)用

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

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

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

相關(guān)文章

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

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

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

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

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

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

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

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

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

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

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

    Spring 注入static屬性值方式

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

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

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

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

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

    Java中if...else語句使用的學(xué)習(xí)教程

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

    使用easyexcel導(dǎo)出的excel文件,使用poi讀取時(shí)異常處理方案

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

最新評論

临西县| 庆安县| 淳化县| 岐山县| 临清市| 洪雅县| 遵化市| 永昌县| 张家口市| 仪陇县| 西乌| 怀柔区| 镇远县| 康马县| 辛集市| 德阳市| 修水县| 寿宁县| 乐都县| 乌什县| 明星| 长武县| 龙井市| 揭东县| 麻江县| 北宁市| 惠东县| 华蓥市| 合山市| 紫阳县| 广南县| 安顺市| 化州市| 景洪市| 拉萨市| 祁门县| 宜兴市| 青神县| 教育| 温州市| 海阳市|