Groovy 非确定性处理链

Groovy 非确定性处理链,groovy,promise,ratpack,Groovy,Promise,Ratpack,在12:14,演示者解释了Groovy的控制流问题,我们不知道第1、2、3、4行的执行顺序。 幻灯片如下图所示。我不明白为什么有人说(2)可以发生在3,4之前或之后。如果2是一个承诺,那么3肯定会在2之后发生,2肯定会在3之前发生。有人能解释一下这一点,或者提供一个例子,说明在承诺完成之前发生了什么 我想他们指的是f.success(true)调用,而不是Thread.start(…)调用。start()调用将在3之前发生,但是success()可能发生,也可能不发生,因为您不知道线程开始运行需

在12:14,演示者解释了Groovy的控制流问题,我们不知道第1、2、3、4行的执行顺序。 幻灯片如下图所示。我不明白为什么有人说(2)可以发生在3,4之前或之后。如果2是一个承诺,那么3肯定会在2之后发生,2肯定会在3之前发生。有人能解释一下这一点,或者提供一个例子,说明在承诺完成之前发生了什么


我想他们指的是
f.success(true)
调用,而不是
Thread.start(…)
调用。
start()
调用将在3之前发生,但是
success()
可能发生,也可能不发生,因为您不知道线程开始运行需要多长时间。冒着暴露我无知的风险,该代码在我看来不是有效的Java。Andread ok我明白了。john它是groovy,但是JVM可以编译它。@D3\u GXT\u Java JVM不能编译任何东西,更不用说groovy代码了。如果Groovy编译器正确生成字节码,它可以执行生成的字节码。我认为它们指的是
f.success(true)
调用,而不是
Thread.start(…)
调用。
start()
调用将在3之前发生,但是
success()
可能发生,也可能不发生,因为您不知道线程开始运行需要多长时间。冒着暴露我无知的风险,该代码在我看来不是有效的Java。Andread ok我明白了。john它是groovy,但是JVM可以编译它。@D3\u GXT\u Java JVM不能编译任何东西,更不用说groovy代码了。如果Groovy编译器正确生成字节码,它可以执行生成的字节码。