|
|
1
52
像 @nullpointer 指出,文档告诉您需要了解的内容。然而,相关文本出人意料地模糊,这里发布的一些评论(和答案)似乎依赖于文档不支持的假设。因此,我认为把它分开是值得的。具体来说,我们应该仔细阅读这一段:
听起来很简单,但细节很简单。它似乎有意避免描述
依赖完成可以在完成线程上调用,而不是在调用完成方法期间调用,如
不
声称受抚养人完成登记
呼叫
对于任何使用
再举一个例子:
tldr: 小心你的假设,当你写文档时,要尽可能清楚和深思熟虑。虽然简洁是一件美妙的事情,但要警惕人类填补空白的倾向。 |
|
|
2
31
使现代化 this answer 由@Mike作为一个有趣的分析进一步深入到文档的细节。 |
|
|
3
9
更具体地说:
|
|
|
4
7
|
|
|
5
1
我知道这个问题很老,但我想用源代码来解释这个问题。
这是来自java 16的源代码,我们可以看到,如果我们触发Accept,我们将把一个空的executor服务引用传递到我们的函数中。 从第二个函数uniAcceptStage()第二个if条件。如果结果不为null,它将触发uniAcceptNow()
如果执行器服务为null,我们将使用lambda函数f.accept(t)执行它。如果我们从主线程触发这个应用/接受,它将使用主线程作为执行线程。
|