0

为什么这段代码不起作用(没有输出)?

clo1 = {
    for(int i =0; i<=10; i++){
        println(i);
    }
}

def thread = Thread.start { clo1 }

但这确实有效:

def thread = Thread.start {
    for(int i =0; i<=10; i++){
        println(i);
    }
}
4

3 回答 3

2

如果你想clo1在线程中执行,你可以这样做

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

或者

Thread.start { clo1() }

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

只需Thread.start { clo1 }将一个新的闭包(什么都不做)传递给Thread.start.

于 2013-01-18T19:47:41.223 回答
2

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

于 2013-01-18T19:48:08.240 回答
2

你在一个闭包中包裹一个闭包

尝试

def thread = Thread.start clo1
于 2013-01-18T19:48:16.213 回答