关于 CompletableFuture 类的疑惑
<pre><code>CompletableFuture<Integer> future = CompletableFuture.supplyAsync(() -> 1)
.thenApplyAsync(i -> i+1)
.thenApplyAsync(i -> i+1)
.thenAccept(i -> System.out.println(i));
</code></pre>
<p><code>thenApplyAsync()</code>和<code>thenApply()</code>这两个方法都需要等待前一个任务的返回值,那么<code>thenApplyAsync()</code>异步的含义是什么?</p>
收藏(0)
分享
相关标签:
注意:本文归作者所有,未经作者允许,不得转载
-
2022年8月4日 03:57
0
0
-
2022年8月4日 03:57
你试着不用这个功能把 A, B, C 三个任务串起来写, 会非常恶心. 它这个是极大简化前后有关联的任务写法.
至于异步的含义, 有可能是 D 依赖 C1, C2 的完成才能执行, 而 C1, C2 是可以并行跑的, C1 依赖 B, C2 依赖 A. 如果不用它提供的这个工具, 你自己要写这么一串, 代码会很长
0
0
-
2022年8月4日 03:57
一个会阻塞主线程,一个不会?
0
0
-
2022年8月4日 04:56
public CompletionStage<Void> thenAcceptAsync(Consumer<? super T> action);
如果直接使用这个 api 的话, 貌似跟 thenAccept 没啥区别
public CompletionStage<Void> thenAcceptAsync(Consumer<? super T> action,
Executor executor)
如果用这个的话, 可以将后续任务切换到其他线程池中进行, 比如之前运行在 eventloop 线程, 接下来的任务是阻塞耗时操作, 那么可以切换到 worker 线程中进行
0
0
-
2022年8月4日 05:28
一个是跑异步,一个是跑同步
0
0