成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

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

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

瀏覽:6日期: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
相關文章:
成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久
久久成人亚洲| 亚洲一区二区三区精品在线| 亚洲电影在线播放| 99精品久久久| 亚洲精品综合在线| 国产欧美欧美| 一区二区三区欧美久久| 极品少妇一区二区三区| 最新不卡av在线| 日韩一区二区免费看| 一区二区三区在线观看动漫 | 国产精品视频在线看| 国产精品99久久久久久久女警 | 五月天视频一区| 性xx色xx综合久久久xx| 亚洲图片自拍偷拍| 久久免费99精品久久久久久| 亚洲一区二区三区中文字幕| 小嫩嫩精品导航| 亚洲一区二区三区自拍| 久久不射2019中文字幕| 日本系列欧美系列| 91久久国产最好的精华液| 日韩国产欧美三级| 在线免费观看日本一区| 国产一区二区在线电影| 日韩精品一区在线| 午夜精品影院| 亚洲欧美日韩一区| 嫩草成人www欧美| 日本欧美加勒比视频| 欧美日韩一区中文字幕| 国产美女视频91| 欧美大片拔萝卜| 色综合欧美在线视频区| 欧美激情一区三区| 亚洲色诱最新| 免费成人av在线播放| 欧美剧情电影在线观看完整版免费励志电影 | 久久成人免费网| 这里只有精品99re| 99免费精品在线| 国产精品电影院| 亚洲影音一区| 国内精品自线一区二区三区视频| 欧美v国产在线一区二区三区| 欧美一区二区三区在线播放 | 日韩一区二区精品在线观看| 91在线观看视频| 亚洲欧洲成人av每日更新| 国产毛片久久| 激情综合五月婷婷| 久久久久久久久久电影| 国产欧美日韩一区| 久久成人免费网| 久久奇米777| 国产一区二区三区黄| 久久精品国产久精国产爱| 日韩视频一区二区在线观看| 97久久精品人人澡人人爽| 中文字幕在线不卡| 老色鬼久久亚洲一区二区| 国产美女久久久久| 国产欧美综合色| 香港久久久电影| 国产在线播精品第三| 欧美激情综合五月色丁香| 亚洲综合国产激情另类一区| 久久91精品国产91久久小草| 国产亚洲欧美一区在线观看| 国产模特精品视频久久久久| 国产麻豆一精品一av一免费| 欧美国产97人人爽人人喊| 国产一区二区黄色| 精品无人码麻豆乱码1区2区 | 国产精品一二三四区| 欧美国产日韩在线观看| 久久亚洲国产精品日日av夜夜| 成人免费福利片| 亚洲在线一区二区三区| 91精品国产入口在线| 精品91在线| 久久99精品久久久久| 国产精品二区一区二区aⅴ污介绍| 在线看国产一区二区| 91美女精品福利| 日韩精品视频网| 久久久久久久综合| 色婷婷综合中文久久一本| av在线这里只有精品| 亚洲一区二区在线播放相泽| 日韩欧美国产系列| 亚欧成人精品| 91亚洲国产成人精品一区二区三| 午夜精品福利视频网站| 精品处破学生在线二十三| 久久九九精品| 9l国产精品久久久久麻豆| 午夜精品久久久久久久蜜桃app| 欧美成人乱码一区二区三区| 国产精品视区| 91麻豆国产福利在线观看| 奇米精品一区二区三区四区| 国产精品色婷婷| 4438成人网| 欧美资源在线| 欧美日本一区| 国产高清亚洲一区| 亚洲一区在线免费观看| 久久免费美女视频| 欧美三级日本三级少妇99| 99av国产精品欲麻豆| av一本久道久久综合久久鬼色| 日韩精品乱码免费| 中文字幕日韩av资源站| 精品欧美乱码久久久久久1区2区| 色偷偷成人一区二区三区91| 国产精品成人观看视频免费| 国产99久久精品| 青青草91视频| 亚洲卡通欧美制服中文| 久久久久久一二三区| 制服丝袜亚洲色图| 老司机精品视频网站| 亚洲动漫精品| 菠萝蜜视频在线观看一区| 美女视频一区二区三区| 亚洲永久精品大片| 中文av字幕一区| 欧美一级片在线看| 欧美性感一类影片在线播放| 国产美女诱惑一区二区| 黄色成人av网站| 91丨porny丨户外露出| 国产精品亚洲а∨天堂免在线| 午夜电影网一区| 亚洲人123区| 欧美国产精品一区二区三区| 精品剧情v国产在线观看在线| 在线免费观看不卡av| 免费久久99精品国产自| 亚洲精品自在在线观看| av午夜精品一区二区三区| 精品一区二区三区在线播放视频| 亚洲国产日韩综合久久精品| 中文字幕中文字幕在线一区| 国产欧美一区二区在线| 欧美videos大乳护士334| 91精品国产麻豆| 欧美亚洲免费在线一区| 久久一区激情| 国产精品一区亚洲| 99精品国产在热久久婷婷| 黄色另类av| 国产一区美女| 欧美另类高清视频在线| www.欧美亚洲| 成人在线综合网站| 国产成人三级在线观看| 久久精品国产一区二区三区免费看 | ww久久中文字幕| 欧美成人猛片aaaaaaa| 日韩欧美激情四射| 日韩视频一区二区三区在线播放| 欧美日本免费一区二区三区| 欧美性大战久久久| 欧洲精品视频在线观看| 91久久精品一区二区| 久久久久久穴| 色视频欧美一区二区三区| 鲁大师影院一区二区三区| 亚洲欧美久久久久一区二区三区| 久久riav二区三区| 久久成人精品| 在线国产亚洲欧美| 欧美日韩一区二区在线视频| 欧美精品在线观看播放| 91精品国产色综合久久| 日韩一区二区在线免费观看| 日韩欧美国产精品| 日韩精品综合一本久道在线视频| 日韩女同互慰一区二区| 精品国产乱子伦一区| 26uuu成人网一区二区三区| 国产日韩亚洲欧美综合| 欧美国产视频在线| 亚洲色图视频网| 亚洲韩国精品一区| 日本不卡视频在线观看| 韩国理伦片一区二区三区在线播放| 国模少妇一区二区三区| 国产成人啪免费观看软件 | 日韩国产精品久久| 精品在线免费观看| 国产v日产∨综合v精品视频| a在线播放不卡| 国产综合婷婷| 亚洲一区二区成人| 久久九九99| 欧美区在线观看|