函數(shù)式接口-并發(fā)鎖實(shí)現(xiàn)例子

什么叫函數(shù)式接口?

有且僅有一個(gè)抽象方法的接口(不包括默認(rèn)方法、靜態(tài)方法以及對(duì)Object方法的重寫)

函數(shù)式接口不同于以往的普通接口,它最大的作用其實(shí)是為了支持行為參數(shù)傳遞,比如傳遞Lambda、方法引用、函數(shù)式接口對(duì)應(yīng)的實(shí)例對(duì)象等。

大概講一下函數(shù)式接口方法傳遞的使用方法

背景:我們執(zhí)行業(yè)務(wù)數(shù)據(jù)更新的時(shí)候需要對(duì)相關(guān)業(yè)務(wù)ID進(jìn)行數(shù)據(jù)庫加鎖,不然會(huì)在同一個(gè)時(shí)刻由不同的用戶對(duì)同一條數(shù)據(jù)進(jìn)行Update操作;加鎖的組件是在update之前進(jìn)行加鎖,在進(jìn)行數(shù)據(jù)庫操作方法save,最后再解鎖,為了寫成公共的邏輯,采用函數(shù)式接口把save方法傳到加鎖組件里面,因?yàn)閷?duì)應(yīng)各種業(yè)務(wù)場(chǎng)景save的操作有不一樣的;

定義函數(shù)式接口入?yún)⒆兞?/div>
加鎖并執(zhí)行方法
加鎖方法調(diào)用

doBusiLock方法參數(shù)有三個(gè):

Action action:加鎖過程中需要執(zhí)行的方法體;

String lockId:鎖粒度,一般是業(yè)務(wù)編號(hào);

?String lockType:鎖類型,是哪一種業(yè)務(wù)類型,有可能同一個(gè)業(yè)務(wù)編號(hào)存在多種類型操作;

重點(diǎn)說一下Action?action,外面調(diào)用傳參是一個(gè)方法save(busiIno),進(jìn)入方法體后action.doAction()其實(shí)執(zhí)行的就是save(busiIno),俗話說就是被替換了;

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容