我正在寻找CompletableFuture的JAVA API文档,我在其中遇到了这一特定行,
为非异步方法的相关完成提供的操作可以由完成当前CompletableFuture的线程执行,也可以由完成方法的任何其他调用者执行。
引用链接说明(https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html)
我对这个特定的短语感到困惑:“或由其他任何使用完成方法的人调用”
问题1)这实际上是什么意思?因此,我怀疑何时Complete将执行相同的线程,否则是否有机会进入不同的线程?
我已经将CompletableFuture与它的supplyAsync()/ runAsync()和whenComplete()方法一起使用。()
CompletableFuture.supplyAsync(
() -> {DO_SOMETHING}, myExecutor
).whenComplete((result, exception) -> {DO_SOMETHING});
对于supplyAsync()/ runAsync(),我使用了Executor服务。之后,该方法(supplyAsync / runAsync)的结果将深入到whenComplete()方法中。
所以问题是: Q2)什么时候完成将始终使用立即使用后supplyAsync / runAsync使用的同一线程?
(如果whenComplete()方法在supplyAsync()/ runAsync()方法时从我的执行器启动的同一线程中执行。)