धागा के बाद से तर्क के अनुक्रमिक निष्पादन में परिणाम में शामिल होने का एकमात्र उद्देश्य धरा, प्रेरणा पहली जगह में कई धागे के बीच कार्य विभाजित करने के लिए क्या है? दूसरे शब्दों में, मैं एक वास्तविक परिदृश्य को स्वीकार करने में असमर्थ हूं जहां वास्तव में धागे में शामिल होना आवश्यक है।थ्रेड में क्यों शामिल किया जाता है() उपयोगी है जब यह धागा अर्थात संगामिति
उत्तर
आप join()
इस्तेमाल कर सकते हैं अगर आप एक से अधिक थ्रेड लॉन्च करना चाहते हैं, और उसके बाद जब तक प्रतीक्षा करें उन सभी को पूरा कर लिया है।
उदाहरण के लिए, 5 काम आइटमों को लॉन्च करना, प्रत्येक को अपने धागे में लॉन्च करना, फिर 5 थ्रेड पर join()
पर कॉल करना आपको सभी 5 वस्तुओं को एक साथ संसाधित करने की अनुमति देगा, लेकिन जब तक वे पूरा नहीं हो जाते हैं तब तक ब्लॉक करें।
ध्यान दें कि कई भाषाओं/ढांचे के पास स्पष्ट रूप से धागे में शामिल होने से बेहतर विकल्प हैं। उदाहरण के लिए, .NET दुनिया में, टीपीएल आपको निरंतरता निर्धारित करने की अनुमति देता है जो तब होता है जब एक या अधिक कार्य (जिसे वांछित थ्रेड पर मैप किया जा सकता है) पूरा हो जाता है।
+1 'thread.join()' की एक और महत्वपूर्ण विशेषता स्मृति सिंक्रनाइज़ेशन है। थ्रेड जो 'join()' को सफल करता है, जो सफल होता है, और अधिक थ्रेड पैकेज के साथ, जो थ्रेड द्वारा बनाए गए मेमोरी अपडेट को देखता है, उसे देखता है। – Gray
कुछ स्थितियों में आप धागे का एक समूह के लिए इसी तरह के कार्यों के हाथ बाहर हो सकता है, लेकिन आप 'जवाब' आप देख रहे हैं पाने के लिए पूरा करने के लिए उन सभी को जरूरत है।
उदाहरण के लिए, यदि आप एक शतरंज के खेल बना रहे थे, तो आप बाहर व्यक्तिगत धागे को चालों के संभावित सेट हाथ हो सकता है और उसके बाद जब तक वे सब 'सर्वश्रेष्ठ' एक को चुनने से पहले समाप्त हो गया प्रतीक्षा करें।
कभी-कभी आप समवर्ती चीजों की एक गुच्छा होने के लिए चाहते हैं, और जब वे सब कर रहे हैं, आप अपने सभी परिणामों को जोड़ सकते हैं और आगे ले जाना चाहते हैं। उदाहरण के लिए
लें एक वेब पोर्टल मुख पृष्ठ पर सर्वर साइड पर स्वतंत्र विगेट्स का एक समूह के लिए डेटा लोड करने की आवश्यकता है। आप उन डेटा लोड को समानांतर में लॉन्च कर सकते हैं, और उसके बाद मुख्य पृष्ठ को प्रस्तुत करने से पहले मुख्य धागा उन पर शामिल हो सकता है (यानी उन्हें समाप्त करने का इंतजार)।
यह उपयोगी नहीं है क्योंकि यह किसी भी अन्य इंटर-थ्रेड कॉमस तंत्र की तुलना में अधिक डाउनसाइड्स है जो मनुष्य को ज्ञात है। यह सक्रिय मल्टीथ्रेडिंग डिज़ाइन को सक्रिय रूप से ओवरहेड बढ़ाने और प्रक्रिया को बंद करने के लिए उच्च क्षमता के साथ प्रोत्साहित करता है, esp। जीयूआई ऐप्स में।
यदि आप इसका उपयोग करने से बच सकते हैं, तो ऐसा करें।
मैंने डाउन-वोट किया क्योंकि मैंने पूरी तरह से उचित कोड देखा है जो जेटी में जॉइन() का उपयोग करता है, जो एक उचित जटिल एप्लीकेशन है। इसे थ्रेड पूल में थ्रेड के लिए इंतजार करने के लिए शटडाउन के दौरान इस्तेमाल किया गया था। Java.util.concurrent में बेहतर विकल्प हैं, लेकिन यदि आप जावा के पुराने संस्करणों का समर्थन करना चाहते हैं तो इसका कोई उपयोग नहीं है। –
मैंने विभिन्न भाषाओं में जॉइन(), TThread.WaitFor इत्यादि का उपयोग करके देवताओं को रोकने की कोशिश में 3 दशकों की तरह बिताया है। मेरा विचार वही रहता है। –
आपको मनाने की कोशिश नहीं कर रहा है (असल में, मैं मानता हूं कि लगभग हमेशा बेहतर विकल्प होते हैं)। बस नीचे मतदान की व्याख्या। –
- 1. सी #: मेरे पृष्ठभूमि कार्यकर्ता थ्रेड सिग्नलिंग क्यों नहीं किया जाता है जब यह नहीं है?
- 2. std :: धागा ऑब्जेक्ट दो बार कॉपी क्यों किया जाता है?
- 3. जब जावा में धागा स्मृति से हटा दिया जाता है?
- 4. थ्रेड नींद और धागा में शामिल होने
- 5. थ्रेड को IDISposable लागू क्यों नहीं किया जाता है?
- 6. जब MVAr कचरा एकत्र किया जाता है
- 7. यह कोड धागा सुरक्षित क्यों है?
- 8. थ्रेड थ्रेड ऑब्जेक्ट को कैसे हटाएं जब धागा स्वयं समाप्त हो जाता है?
- 9. नॉकआउट जे में चेकबॉक्स क्यों चेक किया जाता है जब केवल चेक किया जाता है?
- 10. match.call क्यों उपयोगी है?
- 11. क्या यह ठीक है थ्रेड # शामिल नहीं है?
- 12. जावा में मुख्य विधि को थ्रेड क्यों निकाला जाता है?
- 13. जावास्क्रिप्ट में स्थानांतरित बफर को क्यों स्थानांतरित किया जाता है?
- 14. std :: async एक नया धागा नहीं उगाएगा जब वापसी मान संग्रहीत नहीं किया जाता है
- 15. जावा प्रतीक्षा()/शामिल हों(): यह डेडलॉक क्यों नहीं करता है?
- 16. "गैर अवरुद्ध" संगामिति क्या है और यह कैसे सामान्य संगामिति से अलग है?
- 17. इवेंट प्रेषण धागा कहां कहा जाता है?
- 18. CRITICAL_SECTION प्रकार के हैंडल का स्वामित्व थ्रेड सदस्य क्यों है, जब यह थ्रेड आईडी को इंगित कर रहा है?
- 19. शीतल ढेर: भ्रष्टाचार क्या है और यह क्यों उपयोगी है?
- 20. थ्रेड synchronization- जब एक धागा एक वस्तु
- 21. क्या समेकन तब भी होता है जब थ्रेड पूल में केवल एक धागा होता है?
- 22. यह फ़ंक्शन दो बार निष्पादित क्यों किया जाता है?
- 23. जब कार्यकर्ता धागा काम करता है, यूआई चकाचौंध हो जाता है
- 24. जावा संगामिति से स्काला संगामिति
- 25. ईमेल सक्रियण क्यों उपयोगी है?
- 26. जब एक initform प्रयोग किया जाता है?
- 27. अनुकूलन! - यह क्या है? यह कैसे किया जाता है?
- 28. यह विशेष परीक्षण क्यों उपयोगी हो सकता है?
- 29. कार्य। जब सभी() - क्या यह एक नया धागा बनाता है?
- 30. जब सीपीथन कचरा कलेक्टर अक्षम किया जाता है तो विनाशक क्यों कहा जाता है?
मुझे न तो। जुड़ें() थ्रेडपूल और ऐप-आजीवन धागे का उपयोग करने के बजाय धागे को लगातार बनाए/समाप्त/नष्ट करने का निमंत्रण है, इसलिए सृजन आदि पर समय/सीपीयू बर्बाद कर रहा है। जुड़ें() बंद होने पर जीयूआई ऐप्स को डेडलॉक करने के लिए भी अच्छा है, इसलिए प्रक्रिया समाप्त होने से रोकना। अस्तित्व में शायद सबसे खराब अंतर-थ्रेड comms तंत्र। –