Featured image of post Java異步執行小精靈 CompletableFuture介紹

Java異步執行小精靈 CompletableFuture介紹

談談我對CompletableFuture的理解

前陣子公司有個需求,是要用Elastic Search撈出四筆約20萬長度左右的List做數據處理,那時候看到同事用了這個CompletableFuture的Lambda,當時看到這個東西的時候

image-20231203115648801

後來稍微看了一下,我感覺這個應該就是Java8對於Async操作的封裝詳請可以看這邊

如果用形象化一點的比喻的話,CompletableFuture就像是世紀帝國的農民、魔獸爭霸的建築工人一樣

image-20231203120242244

你在遊戲一開始可能會派幾個農民去挖礦、砍樹,當然也會叫幾個農民去蓋建築物,而這些你下達指令,後續就不用在管他的行為其實就很像CompleteFuture的在做的事,而CompleteFuture與一般的Async,最大的差異在於CompleteFuture支援了一系列後續操作,比如說當你第一個Future完成,接著做的.thenApply .whenComplete .thenAccept ,或是Future 拋出例外時做的exceptionally等等,讓非同步的操作與Method chaining兩者結合在一起

實際演練

推薦的外部連結

https://popcornylu.gitbooks.io/java_multithread/content/async/cfuture.html

https://www.zhihu.com/question/433003386

Licensed under CC BY-NC-SA 4.0