Springboot中,異步線(xiàn)程的執(zhí)行順序的控制-創(chuàng)新互聯(lián)

1、順序的定義

異步任務(wù)存在如下幾種順序:順序的開(kāi)啟子任務(wù)(運(yùn)行順序和結(jié)束順序不確定)。順序的完成(就是A先啟動(dòng),先執(zhí)行完,再執(zhí)行B任務(wù),往往A、B之間存在某種依賴(lài)關(guān)系)。還有就是優(yōu)先級(jí)的排序,就是A,B,C任務(wù)都在排隊(duì),來(lái)了個(gè)優(yōu)先級(jí)更高的D任務(wù),那么就在存在資源的時(shí)候,優(yōu)先執(zhí)行D任務(wù)。

專(zhuān)業(yè)領(lǐng)域包括成都做網(wǎng)站、成都網(wǎng)站制作、商城系統(tǒng)網(wǎng)站開(kāi)發(fā)、微信營(yíng)銷(xiāo)、系統(tǒng)平臺(tái)開(kāi)發(fā), 與其他網(wǎng)站設(shè)計(jì)及系統(tǒng)開(kāi)發(fā)公司不同,成都創(chuàng)新互聯(lián)的整合解決方案結(jié)合了幫做網(wǎng)絡(luò)品牌建設(shè)經(jīng)驗(yàn)和互聯(lián)網(wǎng)整合營(yíng)銷(xiāo)的理念,并將策略和執(zhí)行緊密結(jié)合,為客戶(hù)提供全網(wǎng)互聯(lián)網(wǎng)整合方案。2、異步的定義

筆者認(rèn)為:異步最重要的就是主線(xiàn)程的運(yùn)行進(jìn)程不會(huì)因?yàn)樽泳€(xiàn)程有沒(méi)有做完而阻塞。簡(jiǎn)單的例子就是媽媽讓孩子去米,媽媽發(fā)出買(mǎi)米這個(gè)命令之后就應(yīng)該去做其他的了。而不應(yīng)該等米下鍋,媽媽在那里干等著。

映射到Springboot中,最主要的應(yīng)該就是接口調(diào)用之后,不管異步任務(wù)是否完成,都應(yīng)該返回結(jié)果給前端。

3、實(shí)現(xiàn)策略的嘗試 3.1、把異步作為一般方法放到同一個(gè)異步方法中

針對(duì):順序的完成(就是A先啟動(dòng),先執(zhí)行完,再執(zhí)行B任務(wù),往往A、B之間存在某種依賴(lài)關(guān)系)。

這個(gè)實(shí)現(xiàn)非常簡(jiǎn)單,只需要調(diào)用一個(gè)異步任務(wù),其他的調(diào)用順序交給子任務(wù)就好。

例如讓孩子去買(mǎi)米。媽媽只需要發(fā)出這個(gè)買(mǎi)米的信號(hào)。至于先去超市,再買(mǎi)米,再把米拿回來(lái)這三個(gè)任務(wù)就交給孩子控制就好。體現(xiàn)在代碼里面就是在異步任務(wù)里面普通的方法調(diào)用。

3.2、使用線(xiàn)程池,定義優(yōu)先級(jí)

針對(duì):優(yōu)先級(jí)的排序,就是A,B,C任務(wù)都在排隊(duì),來(lái)了個(gè)優(yōu)先級(jí)更高的D任務(wù),那么就在存在資源的時(shí)候,優(yōu)先執(zhí)行D任務(wù)。

這里可以才用線(xiàn)程池是實(shí)現(xiàn),而不是注解??梢詤⒖枷旅娴逆溄?。為T(mén)hreadPoolTaskExecutor使用PriorityBlockingQueue

https://blog.csdn.net/qq_38397501/article/details/125280650

4、針對(duì)Future的思考

實(shí)現(xiàn)鏈接請(qǐng)查考:https://javaforall.cn/157831.html

Future也是@Async返回值的一種,而且通過(guò)返回值我們可以判斷該任務(wù)是否已經(jīng)結(jié)束。如果我們有異步執(zhí)行的任務(wù)A,B,C,我們可以通判斷A任務(wù)是否執(zhí)行完再執(zhí)行B。這樣也完成了順序的控制。

問(wèn)題是在哪里去判斷呢? 如果在主線(xiàn)程中去判斷,那么是不是就做成了等米下鍋的事實(shí)。就是主任務(wù)需要等待異步任務(wù)是否完成,才能決定是否進(jìn)行下一步。

那么我們能不能開(kāi)個(gè)異步任務(wù)來(lái)執(zhí)行這A,B,C三個(gè)任務(wù)呢,技術(shù)上是可行的。但是如果開(kāi)了異步任務(wù),考慮是否需要再使用Future,保證順序,使用同步任務(wù)更好,那就作成3.1的做法。而且在異步任務(wù)里面再開(kāi)線(xiàn)程或者異步任務(wù),本身就是非常不可取的做法。因?yàn)闀?huì)導(dǎo)致線(xiàn)程指數(shù)級(jí)增加,一旦并發(fā)過(guò)高,性能將快速下降。

你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購(gòu),新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧

本文標(biāo)題:Springboot中,異步線(xiàn)程的執(zhí)行順序的控制-創(chuàng)新互聯(lián)
鏈接URL:http://muchs.cn/article48/dpseep.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供手機(jī)網(wǎng)站建設(shè)定制開(kāi)發(fā)、動(dòng)態(tài)網(wǎng)站外貿(mào)網(wǎng)站建設(shè)、企業(yè)建站、用戶(hù)體驗(yàn)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

搜索引擎優(yōu)化