前陣子公司有個需求,是要用Elastic Search撈出四筆約20萬長度左右的List做數據處理,那時候看到同事用了這個CompletableFuture的Lambda,當時看到這個東西的時候
後來稍微看了一下,我感覺這個應該就是Java8對於Async操作的封裝詳請可以看這邊。
如果用形象化一點的比喻的話,CompletableFuture就像是世紀帝國的農民、魔獸爭霸的建築工人一樣
你在遊戲一開始可能會派幾個農民去挖礦、砍樹,當然也會叫幾個農民去蓋建築物,而這些你下達指令,後續就不用在管他的行為其實就很像CompleteFuture的在做的事,而CompleteFuture與一般的Async,最大的差異在於CompleteFuture支援了一系列後續操作,比如說當你第一個Future完成,接著做的.thenApply .whenComplete .thenAccept ,或是Future 拋出例外時做的exceptionally等等,讓非同步的操作與Method chaining兩者結合在一起
實際演練
推薦的外部連結
https://popcornylu.gitbooks.io/java_multithread/content/async/cfuture.html