2013-01-18 51 views
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); 
    } 
} 
+0

謝謝大家,但我必須選擇第一個答案。 – user1170330

回答

2

如果你想在線程中執行clo1你可以做

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

Thread.start { clo1() } 

第一個直接將關閉傳遞給Thread.start。第二種解決方案創建一個新的閉包,它執行clo1

隨着Thread.start { clo1 }只是你通過一個新的封閉(什麼都不做)到Thread.start

2

看起來您在傳遞給Thread.start {clo1}的閉包內放置了一個閉包(clo1)。調用Threat.start clo1會給你預期的結果。

2

你是在一個封閉包裝的封閉

嘗試

def thread = Thread.start clo1