在CompletableFuture
的上下文中,我理解thenApply(..)
可以使用当前线程并可以使用预定义的执行器(例如ForkJoinPool(,而thenApplyAsync(..)
确保始终使用预定义的执行者。
在我看来,thenApplyAsync(..)
似乎更"可靠",因为它从不阻塞当前线程,而thenApply(..)
可能会令人惊讶。
我的问题是:哪个示例/场景使用thenApply(..)
而不是thenApplyAsync(..)
是有效的?
谢谢Christoph
是的,thenApplyAsync
会使用一些excecutor。这意味着必须创建一些Runnable对象并将其放入执行器的队列中。如果您想在这个CompletableFuture
完成后执行的函数非常简单,那么直接调用这个方法可能比创建信封Runnable更有效。