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