SpringBoot 非同步呼叫方法並接收返回值

2021-09-26 05:26:49 字數 869 閱讀 9274

專案中肯定會遇到非同步呼叫其他方法的場景,比如有個計算過程,需要計算很多個指標的值,但是每個指標計算的效率快慢不同,如果採用同步執行的方式,執行這乙個過程的時間是計算所有指標的時間之和。比如:

方法a:計算指標x,指標y,指標z的值,其中計算指標x需要1s,計算指標y需要2s,指標z需要3s。最終執行完方法a就是5s。

現在用非同步的方式優化一下

方法a非同步呼叫方法b,方法c,方法d,方法b,方法c,方法d分別計算指標x,指標y,指標z的值,那麼最終執行完方法a的時間則是3s。

步驟一:配置執行緒池,新增@configuration和@enableasync注

@configuration

@enableasync

public class executorconfig

}

步驟2:定義方法a,方法b,方法c,方法d

@service

public class asyncservice catch (exception e)

return new asyncresult<>(1);

}@async("asyncexecutor")

public futuremethodc() catch (exception e)

return new asyncresult<>(2);

}@async("asyncexecutor")

public futuremethodd() catch (exception e)

return new asyncresult<>(3);

}}

public integer methoda() throws exception}

Springboot之非同步呼叫(Async)

非同步呼叫通常是指非同步呼叫service。1.啟動類開啟非同步呼叫 enableasync 2.controller層 無特殊處理 public string asyn 3.service層中需要非同步呼叫的方法加 async註解 async public void asyn system.out...

同步呼叫與非同步呼叫

一 什麼是同步呼叫與非同步呼叫 定義 1 同步就是整個處理過程順序執行,當各個過程都執行完畢,並返回結果。2 非同步呼叫則是只是傳送了呼叫的指令,呼叫者無需等待被呼叫的方法完全執行完畢 而是繼續執行下面的流程。例如,在某個呼叫中,需要順序呼叫 a,b,c三個過程方法 如他們都是同步呼叫,則需要將他們...

SpringBoot 非同步呼叫方法並接收返回值

一 背景 專案中肯定會遇到非同步呼叫其他方法的場景,比如有個計算過程,需要計算很多個指標的值,但是每個指標計算的效率快慢不同,如果採用同步執行的方式,執行這乙個過程的時間是計算所有指標的時間之和。比如 方法a 計算指標x,指標y,指標z的值,其中計算指標x需要1s,計算指標y需要2s,指標z需要3s...