Not :thenAcceptBothAsync ile kardeştir.
Bazı CompletableFuture metodları iki tane işin bitiminde yeni bir iş çalıştırmak içindir. Bunlara "Two to One" denilebilir.
"Two to One" için kullanılabilecek metodlar
- thenCombine()
- thenAcceptBoth()
olabilir
İmzası şöyle
public <U> CompletableFuture<Void> thenAcceptBoth( CompletionStage<? extends U> other, BiConsumer<? super T, ? super U> action)
thenCombine() vs - thenAcceptBoth()
Açıklaması şöyle
thenCombine() ile şöyle yaparız. Burada CompletableFuture<Foo> şeklinde bir sonuç değeri dönülüyor.... when we want to do something with two Futures‘ results, but don't need to pass any resulting value down a Future chain. The thenAcceptBoth method is there to help:
CompletableFuture<String> completableFuture= CompletableFuture.supplyAsync(() -> "Hello").thenCombine(CompletableFuture.supplyAsync(() -> " World"), (s1, s2) -> s1 + s2));assertEquals("Hello World", completableFuture.get());
Örnek
thenAcceptBoth() ile şöyle yaparız. Her iki supplyAsync() bitince, System ile bunları gösterir.
CompletableFuture future = CompletableFuture.supplyAsync(() -> "Hello").thenAcceptBoth(CompletableFuture.supplyAsync(() -> " World"),(s1, s2) -> System.out.println(s1 + s2));
Örnek
Şöyle yaparız
var result = CompletableFuture.supplyAsync(Weather::getWeatherFromServerA) .thenAcceptBoth( CompletableFuture.supplyAsync((Quotation::getQuotationFromServerA)), (weather, quotation) -> System.out.println(weather + ":" + quotation)) ;
Hiç yorum yok:
Yorum Gönder