2013-01-16 14 views
7

में थ्रेड में शामिल होना join विधि क्या करती है?
के रूप में:ग्रोवी

def thread = Thread.start { println "new thread" } 
thread.join() 

इस कोड को भी join बयान के बिना ठीक काम करता है।

उत्तर

18

एक ही रूप में यह जावा में करता है - यह धागा कि धागा Thread वस्तु जिस पर join समाप्त कर दिया है बुलाया गया था का प्रतिनिधित्व करती है जब तक ब्लॉक करने के लिएjoin कहा जाता है का कारण बनता है।

यदि आप मुख्य थ्रेड को कुछ नया करते हैं तो आप अंतर देख सकते हैं (उदाहरण के लिए println) नया धागा उत्पन्न करने के बाद।

def thread = Thread.start { 
    sleep(2000) 
    println "new thread" 
} 
//thread.join() 
println "old thread" 

join जबकि अन्य धागा अभी भी चल रहा है इस println भी हो सकता है, तो आप old thread मिल जाएगा बिना, new thread से दो सेकंड बाद का पालन किया। join के साथ मुख्य थ्रेड को अन्य थ्रेड समाप्त होने तक प्रतीक्षा करनी चाहिए, इसलिए आपको दो सेकंड के लिए कुछ भी नहीं मिलेगा, फिर new thread, फिर old thread

+0

तो प्रोग्राम थ्रेड समाप्त होने तक कुछ भी नहीं करेगा? – user1170330

+0

@ user1170330 मैंने एक उदाहरण का थोड़ा और जोड़ा है। –

+0

बहुत बहुत धन्यवाद! – user1170330