CompletableFuture详解~thenCombine
生活随笔
收集整理的這篇文章主要介紹了
CompletableFuture详解~thenCombine
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
使用BiFunction處理兩個階段的結果
如果CompletableFuture依賴兩個前面階段的結果, 它復合兩個階段的結果再返回一個結果,我們就可以使用thenCombine()函數。整個流水線是同步的,所以getNow()會得到最終的結果,它把大寫和小寫字符串連接起來。
static void thenCombineExample() {String original = "Message";CompletableFuture cf = CompletableFuture.completedFuture(original).thenApply(s -> delayedUpperCase(s)).thenCombine(CompletableFuture.completedFuture(original).thenApply(s -> delayedLowerCase(s)),(s1, s2) -> s1 + s2);assertEquals("MESSAGEmessage", cf.getNow(null)); }異步使用BiFunction處理兩個階段的結果
類似上面的例子,但是有一點不同:依賴的前兩個階段異步地執行,所以thenCombine()也異步地執行,即時它沒有Async后綴。
Javadoc中有注釋:
| Actions supplied for dependent completions of non-async methods may be performed by the thread that completes the current CompletableFuture, or by any other caller of a completion method |
所以我們需要join方法等待結果的完成。
static void thenCombineAsyncExample() {String original = "Message";CompletableFuture cf = CompletableFuture.completedFuture(original).thenApplyAsync(s -> delayedUpperCase(s)).thenCombine(CompletableFuture.completedFuture(original).thenApplyAsync(s -> delayedLowerCase(s)),(s1, s2) -> s1 + s2);assertEquals("MESSAGEmessage", cf.join()); } 創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的CompletableFuture详解~thenCombine的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 精益创业~如何驾驭愿景
- 下一篇: Android Intent 用法总结