Multithreading 线程中作为参数的闭包

Multithreading 线程中作为参数的闭包,multithreading,groovy,closures,Multithreading,Groovy,Closures,为什么这段代码不工作(没有输出) clo1={ 对于(int i=0;i如果要在线程中执行clo1,可以执行 Thread.start clo1 // same as Thread.start(clo1) 或 第一个解决方案将闭包直接传递给线程.start。第二个解决方案创建一个新的闭包,执行clo1 使用Thread.start{clo1}只需向Thread.start传递一个新的闭包(该闭包不起任何作用)。如果要在线程中执行clo1,可以 Thread.start clo1 // same

为什么这段代码不工作(没有输出)

clo1={

对于(int i=0;i如果要在线程中执行
clo1
,可以执行

Thread.start clo1 // same as Thread.start(clo1)

第一个解决方案将闭包直接传递给
线程.start
。第二个解决方案创建一个新的闭包,执行
clo1


使用
Thread.start{clo1}
只需向
Thread.start传递一个新的闭包(该闭包不起任何作用)。如果要在线程中执行
clo1
,可以

Thread.start clo1 // same as Thread.start(clo1)

第一个解决方案将闭包直接传递给
线程.start
。第二个解决方案创建一个新的闭包,执行
clo1


使用
Thread.start{clo1}
只需向
Thread.start
传递一个新的闭包(什么也不做)。看起来您在传递给Thread.start{clo1}的闭包中放置了一个闭包(clo1)。调用Threat.start clo1将得到您预期的结果。

看起来您放置了一个闭包(clo1)在传递给Thread.start{clo1}的闭包内部。调用Threat.start clo1将得到预期的结果。

您正在将闭包包装到闭包中

试一试


你在用一个闭包包装一个闭包

试一试


谢谢大家,但我必须选择第一个答案。谢谢大家,但我必须选择第一个答案。
Thread.start clo1 // same as Thread.start(clo1)
Thread.start { clo1() }
def thread = Thread.start clo1