日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

SpringBoot用@Async注解實現異步任務

瀏覽:22日期:2023-04-01 13:03:56
什么是異步調用?

異步調用是相對于同步調用而言的,同步調用是指程序按預定順序一步步執行,每一步必須等到上一步執行完后才能執行,異步調用則無需等待上一步程序執行完即可執行。

如何實現異步調用?

多線程,這是很多人第一眼想到的關鍵詞,沒錯,多線程就是一種實現異步調用的方式。

在非spring目項目中我們要實現異步調用的就是使用多線程方式,可以自己實現Runable接口或者集成Thread類,或者使用jdk1.5以上提供了的Executors線程池。

StrngBoot中則提供了很方便的方式執行異步調用。

異步接口的使用場景

耗時比較長,任務比較多的接口。比方說,文件下載,大文件下載比較耗時,這個時候就可以使用異步接口。

項目示例已上傳至GitHub,可見github項目地址。

   在解釋異步調用之前,我們先來看同步調用的定義;同步就是整個處理過程順序執行,當各個過程都執行完畢,并返回結果。 異步調用則是只是發送了調用的指令,調用者無需等待被調用的方法完全執行完畢;而是繼續執行下面的流程。

   例如, 在某個調用中,需要順序調用 A, B, C三個過程方法;如他們都是同步調用,則需要將他們都順序執行完畢之后,方算作過程執行完畢; 如B為一個異步的調用方法,則在執行完A之后,調用B,并不等待B完成,而是執行開始調用C,待C執行完畢之后,就意味著這個過程執行完畢了。

@Async介紹

基于@Async標注的方法稱為異步方法,方法在執行的時候,將會在獨立的線程中被執行,調用者無需等待它的完成,即可繼續其他的操作。使用時在SpringBoot主配置類中開啟異步即可。

@EnableAsync@SpringBootApplicationpublic class SpringBootAsyncTestApplication {無返回值異步方法

@Asyncpublic void asyncMethodWithNoReturnType() { try { Thread.sleep(3000); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println('asyncMethodWithNoReturnType...');}

使用方法比較簡單,編寫一個測試方法并加上@Async注解即可。

含返回值異步方法

@Asyncpublic Future<String> asyncMethodWithReturnType() { try { Thread.sleep(3000); return new AsyncResult<String>('success'); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println('asyncMethodWithReturnType...'); return null;}

返回值利用Future泛型接口實現。

Future是對于具體的 Runnable 或者 Callable 任務的執行結果進行取消、查詢是否完成、獲取結果的接口,必要時可以通過get方法獲取執行結果,該方法會阻塞直到任務返回結果,包含了以下幾個方法。

public interface Future<V> { boolean cancel(boolean mayInterruptIfRunning); boolean isCancelled(); boolean isDone(); V get() throws InterruptedException, ExecutionException; V get(long timeout, TimeUnit unit) throws InterruptedException, ExecutionException, TimeoutException;}

1.cancel方法的作用是取消任務,取消任務成功則返回true,反之返回false。參數 mayInterruptIfRunning 表示是否允許取消正在執行卻沒有執行完畢的任務。

運行cancel方法取消任務時:

i.若任務已完成:則無論 mayInterruptIfRunning 為 true 或 false,此方法都返回 false,即取消已經完成的任務都會返回false。

i.若任務正在執行:

mayInterruptIfRunning 設置為 true,則返回true。 mayInterruptIfRunning 設置為false,則返回false。

iii.如果任務未執行,則無論mayInterruptIfRunning為true還是false,都返回true。

2.isCancelled方法的作用是判斷任務是否被取消成功,若在任務正常完成前被取消,則返回 true。

3.isDone方法的作用是判斷任務是否已經完成,若任務已完成,則返回true。

4.get()方法的作用是獲取執行結果,注意此方法會產生阻塞,等到任務執行完畢后才能獲得執行結果。

5.get(long timeout, TimeUnit unit)方法的作用同樣是獲取執行結果,若在指定時間內還未獲取到執行結果,則返回null。

編寫測試接口

編寫/callWithNoReturnType和/callWithReturnType接口用于查看異步任務的執行過程。

@RestControllerpublic class AsyncController { @Autowired AsyncService asynSerivce; @GetMapping('/callWithNoReturnType') public String callWithNoReturnType() { asynSerivce.asyncMethodWithNoReturnType(); return 'success'; } @GetMapping('/callWithReturnType') public String callWithReturnType() { Future<String> future=asynSerivce.asyncMethodWithReturnType(); try { return future.get(); } catch (InterruptedException e) { e.printStackTrace(); } catch (ExecutionException e) { e.printStackTrace(); } return 'fail'; }

運行項目后使用Postman進行接口測試,分別給/callWithNoReturnType和/callWithReturnType接口發送Get請求,調用無返回值的異步方法asyncWithNoReturnType時,會立即返回返回值。但調用含返回值異步方法asyncWithReturnType時,由于我們調用了get()方法,會在等待3000毫秒后,才返回返回值。

SpringBoot用@Async注解實現異步任務

SpringBoot用@Async注解實現異步任務

到此這篇關于SpringBoot用@Async注解實現異步任務的文章就介紹到這了,更多相關SpringBoot @Async異步內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Spring
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
免费日韩视频| 中文字幕av亚洲精品一部二部| 快she精品国产999| 国产精品亚洲一区二区三区在线观看| 国产欧美一区二区精品久久久 | 日韩中文欧美在线| 亚洲午夜一级| 久久久成人网| 亚洲综合在线电影| 中文在线免费视频| 日韩不卡在线观看日韩不卡视频| 99国产精品| 天堂网在线观看国产精品| 麻豆精品99| 久久一区视频| 国产精品综合色区在线观看| 欧美片第1页综合| 日韩不卡免费视频| 日韩精品久久理论片| 日韩一区二区三区四区五区| 蜜臀久久久久久久| 蜜臀av国产精品久久久久| 视频一区二区不卡| 亚洲精品一二三区区别| 欧美91在线|欧美| 91精品在线免费视频| 日韩国产精品久久久久久亚洲| 亚洲精品黄色| 一区二区国产在线观看| 欧美日韩精品免费观看视频完整| 久久免费大视频| 日韩午夜电影| 国产农村妇女精品一二区| 先锋亚洲精品| 日韩精品久久理论片| 91福利精品在线观看| 日韩av不卡一区二区| 国产欧美日韩精品一区二区免费| 国产日韩视频在线| 麻豆一区二区三| 夜鲁夜鲁夜鲁视频在线播放| 亚洲天堂成人| 最新国产精品久久久| 亚洲欧洲美洲国产香蕉| 日本少妇精品亚洲第一区| 国产精品天堂蜜av在线播放| 丁香婷婷久久| 亚洲午夜黄色| 亚洲我射av| 亚洲日产国产精品| 国产欧美一区二区三区国产幕精品| 免费在线播放第一区高清av| 成人美女视频| 久久国产精品99国产| 日韩精品成人在线观看| 久久男人av| 国产精品yjizz视频网| 欧美私人啪啪vps| 日韩av一区二区在线影视| 亚洲精品国产精品粉嫩| 久久人人97超碰国产公开结果| 91成人福利| 欧美一级二级三级视频| 日韩精品一级| 久久亚洲国产精品一区二区| 亚洲欧美伊人| 久久视频一区| 99精品综合| 久久久成人网| 亚洲国产成人精品女人| 亚洲不卡av不卡一区二区| 国产精品99一区二区三区| 久久久久亚洲精品中文字幕| 欧美在线看片| 国产精品毛片视频| 麻豆精品久久久| 9999国产精品| 午夜久久美女| 亚洲人www| 国产精品白丝久久av网站| 国产精品啊啊啊| 涩涩av在线| 9久re热视频在线精品| 日本不卡在线视频| 成人在线免费观看网站| 91久久国产| 欧美亚洲一区二区三区| 超碰在线99| 久久亚洲专区| 天堂成人国产精品一区| 国产美女亚洲精品7777| 成人美女视频| 综合国产视频| 欧美国产免费| 午夜欧美视频| 日本不卡不码高清免费观看 | 欧美日韩国产高清电影| 亚洲福利久久| 欧美日韩xxxx| 亚洲成av在线| 国产精品3区| 日韩大片在线| 欧美一级二级三级视频| 国产在线日韩| 精品午夜久久| 日韩综合一区二区| 亚洲精品电影| 在线一区视频观看| 精品国产三区在线| 97成人在线| 免费视频一区二区| re久久精品视频| 特黄毛片在线观看| 国产精品久久久久久久久久妞妞| 蜜桃久久久久久| 婷婷久久一区| 国产欧美一区二区三区国产幕精品 | 99精品美女| 成人啊v在线| 久久精品网址| 久久99性xxx老妇胖精品| 欧美一区91| 欧美另类中文字幕| 91精品麻豆| 日韩福利视频导航| 日本午夜精品一区二区三区电影| 中文字幕成人| 日韩国产一二三区| 中文字幕一区二区三区四区久久| 亚洲综合电影| 久久av偷拍| 国产精品亚洲人成在99www| 日本欧美韩国一区三区| 久久精品99国产精品| 国产极品模特精品一二| 精品国产亚洲一区二区三区大结局| 国产精品红桃| 97在线精品| 国户精品久久久久久久久久久不卡| 亚洲精品成人| 日本精品另类| 黄色网一区二区| 日韩视频免费| 国产精品一线天粉嫩av| 日韩黄色av| 国产资源在线观看入口av| 欧美a级一区| 亚洲精品成a人ⅴ香蕉片| 国产福利资源一区| 久久人人精品| 亚洲精品一二| 美女视频免费精品| 狠狠干综合网| 久久精品一区二区国产| 91精品一区国产高清在线gif | 亚洲调教视频在线观看| 亚洲综合福利| a天堂资源在线| 蜜桃传媒麻豆第一区在线观看| 国产日韩一区二区三区在线| 国产精品福利在线观看播放| 美女被久久久| 捆绑调教日本一区二区三区| 男人操女人的视频在线观看欧美| 欧美日韩一区二区三区四区在线观看 | 四虎884aa成人精品最新| 久久国产影院| 国产情侣久久| 免费观看久久av| 精品淫伦v久久水蜜桃| 鲁大师成人一区二区三区| 国产成人免费视频网站视频社区| 亚洲欧美日韩综合国产aⅴ| 国产精品国产一区| 91精品国产自产观看在线 | 色黄视频在线观看| 国产精品1区| 日韩一区免费| 羞羞答答国产精品www一本| 日韩av一区二区三区四区| 99久久99视频只有精品| 精品视频高潮| 欧美日韩伊人| 亚洲精品激情| 免费精品视频最新在线| 好看的亚洲午夜视频在线| 最新中文字幕在线播放| 久久精品国产久精国产爱| 人人精品久久| 日本v片在线高清不卡在线观看| 黄色日韩精品| 亚洲福利精品| japanese国产精品| av高清一区| 久久av免费| 久久91视频| 国产精品成人a在线观看| 日韩欧美一区免费| 亚洲91视频| 性色一区二区|