何时使用CompletableFuture#然后使用Apply(.)而不是ApplyAsync(.)



CompletableFuture的上下文中,我理解thenApply(..)可以使用当前线程并可以使用预定义的执行器(例如ForkJoinPool(,而thenApplyAsync(..)确保始终使用预定义的执行者。

在我看来,thenApplyAsync(..)似乎更"可靠",因为它从不阻塞当前线程,而thenApply(..)可能会令人惊讶。

我的问题是:哪个示例/场景使用thenApply(..)而不是thenApplyAsync(..)是有效的?

谢谢Christoph

是的,thenApplyAsync会使用一些excecutor。这意味着必须创建一些Runnable对象并将其放入执行器的队列中。如果您想在这个CompletableFuture完成后执行的函数非常简单,那么直接调用这个方法可能比创建信封Runnable更有效。

最新更新