假设我有以下代码:
CompletableFuture<Integer> future
= CompletableFuture.supplyAsync( () -> 0);
thenApply
个案:
future.thenApply( x -> x + 1 )
.thenApply( x -> x + 1 )
.thenAccept( x -> System.out.println(x));
这里输出为2,现在对于 thenApplyAsync
:
future.thenApplyAsync( x -> x + 1 ) // first step
.thenApplyAsync( x -> x + 1 ) // second step
.thenAccept( x -> System.out.println(x)); // third step
我在这个 博客中读到,每个 thenApplyAsync
在一个单独的线程中执行,并且“在同一时间”(这意味着在 thenApplyAsyncs
完成之前跟随 thenApplyAsyncs
开始) ,如果是这样,如果第一步没有完成,那么第二步的输入参数值是多少?
如果不采取第二步措施,第一步的结果将何去何从? 第三步将采取哪一步的结果?
如果第二步必须等待第一步的结果,那么 Async
的意义是什么?
这里 x-> x + 1只是为了说明这一点,我想知道的是在计算时间很长的情况下。