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更有效