Questions tagged «completable-future»

4
CompletableFuture | thenApply与thenCompose
我无法理解thenApply()和之间的区别thenCompose()。 那么,有人可以提供有效的用例吗? 从Java文档中: thenApply(Function<? super T,? extends U> fn) 返回一个新值CompletionStage,当此阶段正常完成时,将使用该阶段的结果作为所提供函数的参数来执行该操作。 thenCompose(Function<? super T,? extends CompletionStage<U>> fn) 返回一个新值CompletionStage,当此阶段正常完成时,将以该阶段作为所提供函数的参数来执行此操作。 我得到的thenCompose扩展的CompletionStage 的第二个参数thenApply没有。 有人可以提供一个例子,说明我必须在什么情况下使用thenApply以及何时使用thenCompose?

1
completablefuture加入vs获得
CompletableFuture.get()和之间有什么区别CompletableFuture.join()? 下面是我的代码: List<String> process() { List<String> messages = Arrays.asList("Msg1", "Msg2", "Msg3", "Msg4", "Msg5", "Msg6", "Msg7", "Msg8", "Msg9", "Msg10", "Msg11", "Msg12"); MessageService messageService = new MessageService(); ExecutorService executor = Executors.newFixedThreadPool(4); List<String> mapResult = new ArrayList<>(); CompletableFuture<?>[] fanoutRequestList = new CompletableFuture[messages.size()]; int count = 0; for (String msg : messages) { CompletableFuture<?> …

9
从List <Future>到Future <List>序列
我正在尝试转换List&lt;CompletableFuture&lt;X&gt;&gt;为CompletableFuture&lt;List&lt;T&gt;&gt;。当您有许多异步任务并且需要获得所有异步任务的结果时,这非常有用。 如果它们中的任何一个失败,那么最终的未来将失败。这就是我实现的方式: public static &lt;T&gt; CompletableFuture&lt;List&lt;T&gt;&gt; sequence2(List&lt;CompletableFuture&lt;T&gt;&gt; com, ExecutorService exec) { if(com.isEmpty()){ throw new IllegalArgumentException(); } Stream&lt;? extends CompletableFuture&lt;T&gt;&gt; stream = com.stream(); CompletableFuture&lt;List&lt;T&gt;&gt; init = CompletableFuture.completedFuture(new ArrayList&lt;T&gt;()); return stream.reduce(init, (ls, fut) -&gt; ls.thenComposeAsync(x -&gt; fut.thenApplyAsync(y -&gt; { x.add(y); return x; },exec),exec), (a, b) -&gt; a.thenCombineAsync(b,(ls1,ls2)-&gt; { ls1.addAll(ls2); return ls1; },exec)); …
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.