मुख्य अंतर - चलने योग्य बनाम थ्रेड
निष्पादन में एक प्रोग्राम को एक प्रक्रिया के रूप में जाना जाता है। प्रक्रिया को कई उपप्रक्रियाओं में विभाजित किया जा सकता है। उदाहरण के लिए, माइक्रोसॉफ्ट वर्ड एक प्रक्रिया है। साथ ही, यह वर्तनी की गलती और व्याकरण की जाँच करता है। यह एक सबप्रोसेस है। इन उपप्रक्रियाओं को धागे के रूप में जाना जाता है। मल्टीथ्रेडिंग एक साथ कई थ्रेड्स को निष्पादित करने की प्रक्रिया है। थ्रेडेड एप्लिकेशन विभिन्न प्रोग्रामिंग भाषाओं का उपयोग करके बनाए जा सकते हैं। रननेबल और थ्रेड जावा प्रोग्रामिंग से जुड़े हैं। जावा में एक रननेबल इंटरफ़ेस को लागू करके या थ्रेड क्लास का विस्तार करके थ्रेड बनाने के लिए दो तरीके हैं।रननेबल को लागू करते समय, कई थ्रेड्स एक ही थ्रेड ऑब्जेक्ट को साझा कर सकते हैं, जबकि एक्सटेंडिंग थ्रेड क्लास में, प्रत्येक थ्रेड में एक अद्वितीय ऑब्जेक्ट जुड़ा होता है। रननेबल और थ्रेड के बीच यही मुख्य अंतर है।
रननेबल क्या है?
एक धागा कुछ राज्यों से होकर गुजरता है। "नया" धागा जीवन चक्र की शुरुआत है। एक नए थ्रेड पर प्रारंभ () विधि कॉल के बाद, यह चलने योग्य हो जाता है। यदि थ्रेड शेड्यूलर थ्रेड का चयन करता है, तो यह चालू स्थिति में स्थानांतरित हो जाता है। धागा राज्य की प्रतीक्षा कर रहा है यदि वह धागा किसी अन्य धागे को कार्य करने के लिए प्रतीक्षा कर रहा है। थ्रेड के काम पूरा करने के बाद, यह टर्मिनेशन स्टेट में चला जाता है।
रननेबल इंटरफ़ेस का उपयोग करके एक थ्रेड को लागू किया जा सकता है। नीचे दिए गए कार्यक्रम का संदर्भ लें।
चित्र 01: रननेबल इंटरफ़ेस का उपयोग करके थ्रेड बनाने के लिए जावा प्रोग्राम
उपरोक्त कार्यक्रम के अनुसार, रननेबल डेमो वर्ग रननेबल इंटरफ़ेस को लागू करता है। रन () विधि उस वर्ग के अंदर है जो रननेबल इंटरफ़ेस को लागू करता है। यह धागे के लिए प्रवेश बिंदु है। तर्क रन () विधि में है। मुख्य कार्यक्रम में, रननेबल डेमो क्लास से इंस्टेंट किए गए ऑब्जेक्ट को परिभाषित करके एक थ्रेड बनाया जाता है। यह टी1 है। प्रारंभ () विधि को t1 का उपयोग करके कहा जाता है।
नीचे दिए गए प्रोग्राम को देखें।
चित्र 02: रननेबल इंटरफ़ेस को लागू करके, लूप को निष्पादित करने के लिए एक थ्रेड बनाने के लिए जावा प्रोग्राम
उपरोक्त उदाहरण के अनुसार, क्लास रननेबल डेमो रननेबल इंटरफेस को लागू करता है। थ्रेड का उपयोग करके निष्पादित करने का तर्क रन () विधि में लिखा गया है। मुख्य कार्यक्रम में, रननेबल डेमो क्लास से इंस्टेंट किए गए ऑब्जेक्ट को परिभाषित करके एक थ्रेड बनाया जाता है।यह टी1 है। फिर, t1 का उपयोग करके प्रारंभ () विधि को कॉल किया जाता है।
थ्रेड क्या है?
थ्रेड बनाने का दूसरा तरीका थ्रेड क्लास को एक्सटेंड करना है। इसमें तीन चरण होते हैं। सबसे पहले वर्ग को थ्रेड वर्ग के विस्तार के रूप में घोषित करना है। बाद में, रन () विधि लिखी जानी चाहिए। इसमें चरणों का क्रम है जो थ्रेड को निष्पादित करना चाहिए। अंत में, थ्रेड ऑब्जेक्ट बनाया जाता है, और थ्रेड के निष्पादन को आरंभ करने के लिए प्रारंभ () विधि को कहा जाता है। नीचे दिए गए कार्यक्रम का संदर्भ लें।
चित्र 03: जावा प्रोग्राम जो थ्रेड क्लास का विस्तार करता है
उपरोक्त कार्यक्रम के अनुसार, MyThread वर्ग थ्रेड वर्ग का विस्तार करता है। यह रन विधि को ओवरराइड करता है। रन () विधि में थ्रेड द्वारा निष्पादित किया जाने वाला तर्क होता है। यह धागे का प्रवेश बिंदु है।फिर थ्रेड ऑब्जेक्ट बनाया जाता है। यह थ्रेड 1 है। थ्रेड प्रारंभ () विधि का उपयोग करके शुरू किया गया है। यह कॉल टू रन () विधि को निष्पादित करेगा।
थ्रेड क्लास को विस्तारित करने वाले दो वर्गों का एक उदाहरण कार्यक्रम इस प्रकार है।
चित्र 04: जावा प्रोग्राम दो वर्गों के साथ जो थ्रेड क्लास का विस्तार करता है
उपरोक्त कार्यक्रम के अनुसार वर्ग ए और बी दोनों ही थ्रेड वर्ग का विस्तार कर रहे हैं। दोनों वर्गों में रन () विधि का कार्यान्वयन है। मुख्य धागा वह है जो मुख्य () विधि को निष्पादित करता है। मुख्य धागा मरने से पहले, यह थ्रेड 1 और थ्रेड 2 बनाता है और शुरू करता है। जब तक मुख्य धागा मुख्य विधि के अंत तक पहुँचता है, तब तक तीन धागे समानांतर में चल रहे होते हैं। कोई विशिष्ट क्रम नहीं है जिसमें धागे आउटपुट देते हैं। एक बार धागा शुरू हो जाने के बाद यह तय करना मुश्किल होता है कि वे किस क्रम को निष्पादित करेंगे।वे स्वतंत्र रूप से चलते हैं।
रननेबल और थ्रेड के बीच समानताएं क्या हैं?
दोनों जावा में एक थ्रेड बनाने के लिए उपयोग कर रहे हैं।
रननेबल और थ्रेड में क्या अंतर है?
चलाने योग्य बनाम थ्रेड |
|
रननेबल जावा में एक थ्रेड बनाने के लिए एक इंटरफ़ेस है जो कई थ्रेड्स को एक ही थ्रेड ऑब्जेक्ट को साझा करने की अनुमति देता है। | थ्रेड जावा में एक थ्रेड बनाने के लिए एक क्लास है जहां प्रत्येक थ्रेड के साथ एक अनूठी वस्तु जुड़ी होती है। |
मेमोरी | |
रननेबल में, कई थ्रेड एक ही ऑब्जेक्ट साझा करते हैं, इसलिए कम मेमोरी की आवश्यकता होती है। | थ्रेड क्लास में, प्रत्येक थ्रेड एक अद्वितीय ऑब्जेक्ट बनाता है, इसलिए अधिक मेमोरी की आवश्यकता होती है। |
क्षमता का विस्तार | |
रननेबल इंटरफ़ेस को लागू करने के बाद, यह एक वर्ग का विस्तार कर सकता है। | जावा में मल्टीपल इनहेरिटेंस समर्थित नहीं है। थ्रेड वर्ग को विस्तारित करने के बाद, यह किसी अन्य वर्ग का विस्तार नहीं कर सकता है। |
कोड रखरखाव | |
रननेबल इंटरफ़ेस कोड को अधिक रखरखाव योग्य बनाता है। | थ्रेड क्लास में, मेंटेनेंस में समय लगता है। |
सारांश - चलने योग्य बनाम थ्रेड
एक ही समय में कई कार्य करने के लिए एक प्रक्रिया को कई उप-प्रक्रियाओं में विभाजित किया जाता है। इन उपप्रक्रियाओं को धागे के रूप में जाना जाता है। थ्रेड को इंस्टेंट करना रननेबल इंटरफ़ेस को लागू करके या थ्रेड क्लास का विस्तार करके किया जा सकता है। थ्रेड क्लास का विस्तार करना आसान है, लेकिन यह बेहतर ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग अभ्यास नहीं है।रननेबल को लागू करते समय, कई थ्रेड एक ही थ्रेड ऑब्जेक्ट को साझा कर सकते हैं, जबकि थ्रेड क्लास को विस्तारित करते समय प्रत्येक थ्रेड में एक अद्वितीय ऑब्जेक्ट जुड़ा होता है। रननेबल और थ्रेड के बीच यही अंतर है। थ्रेड क्लास में मल्टीपल ऑब्जेक्ट क्रिएशन अधिक मेमोरी का उपभोग कर सकता है।
रननेबल बनाम थ्रेड का पीडीएफ डाउनलोड करें
आप इस लेख का पीडीएफ संस्करण डाउनलोड कर सकते हैं और उद्धरण नोट के अनुसार इसे ऑफ़लाइन उद्देश्यों के लिए उपयोग कर सकते हैं। कृपया पीडीएफ संस्करण यहां डाउनलोड करें रननेबल और थ्रेड के बीच अंतर