Java 何时使用CompletableFuture#然后应用(..)而不是应用同步(..)?

Java 何时使用CompletableFuture#然后应用(..)而不是应用同步(..)?,java,completable-future,Java,Completable Future,在CompletableFuture的上下文中,我理解thenApply(..)可以使用当前线程,也可以使用预定义的执行器(例如ForkJoinPool),而thenapplysync(..)确保始终使用预定义的执行器 在我看来,thenApplyAsync(…)似乎更“可靠”,因为它从不阻塞当前线程,而thenApplyAsync(…)可能会令人惊讶 我的问题是:使用然后应用(…)而不是然后应用同步(…),哪个示例/场景是有效的 谢谢,Christoph是的,那么applyasync将使用一些

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

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

我的问题是:使用
然后应用(…)
而不是
然后应用同步(…)
,哪个示例/场景是有效的


谢谢,Christoph

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

是,
应用程序同步将使用一些例外。这意味着必须创建一些可运行对象并将其放入执行器队列中。如果您希望在此
CompletableFuture
的completion之后执行的函数非常简单,那么直接调用此方法可能比创建信封Runnable更有效