爲什麼此代碼不起作用(無輸出)?作爲線程中的參數關閉
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);
}
}
爲什麼此代碼不起作用(無輸出)?作爲線程中的參數關閉
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);
}
}
如果你想在線程中執行clo1
你可以做
Thread.start clo1 // same as Thread.start(clo1)
或
Thread.start { clo1() }
第一個直接將關閉傳遞給Thread.start
。第二種解決方案創建一個新的閉包,它執行clo1
。
隨着Thread.start { clo1 }
只是你通過一個新的封閉(什麼都不做)到Thread.start
。
看起來您在傳遞給Thread.start {clo1}的閉包內放置了一個閉包(clo1)。調用Threat.start clo1會給你預期的結果。
你是在一個封閉包裝的封閉
嘗試
def thread = Thread.start clo1
謝謝大家,但我必須選擇第一個答案。 – user1170330