जावा में नींद और प्रतीक्षा के बीच अंतर

विषयसूची:

जावा में नींद और प्रतीक्षा के बीच अंतर
जावा में नींद और प्रतीक्षा के बीच अंतर

वीडियो: जावा में नींद और प्रतीक्षा के बीच अंतर

वीडियो: जावा में नींद और प्रतीक्षा के बीच अंतर
वीडियो: नींद और ध्यान में क्या अंतर है? sadhguru Hindi / difference between sleep and meditation? 2024, दिसंबर
Anonim

मुख्य अंतर - जावा में नींद बनाम प्रतीक्षा

जावा में मल्टीथ्रेडिंग के लिए स्लीप एंड वेट दो तरीकों का इस्तेमाल किया जाता है। स्लीप मेथड थ्रेड क्लास का है जबकि वेट मेथड ऑब्जेक्ट क्लास से है। जावा में नींद और प्रतीक्षा के बीच महत्वपूर्ण अंतर यह है कि, नींद का उपयोग वर्तमान थ्रेड के निष्पादन को मिलीसेकंड की निर्दिष्ट संख्या के लिए निलंबित करने के लिए किया जाता है जबकि प्रतीक्षा विधि का उपयोग वर्तमान थ्रेड को तब तक प्रतीक्षा करने के लिए किया जाता है जब तक कि कोई अन्य थ्रेड अधिसूचना को आमंत्रित नहीं करता है या वस्तु के लिए सभी विधि को सूचित करें।

एक थ्रेड ऑपरेटिंग सिस्टम में प्रोसेसिंग की सबसे छोटी इकाई है। यह एक कार्यक्रम के भीतर नियंत्रण का एकल अनुक्रमिक प्रवाह है।धागे हल्के होते हैं। मल्टीथ्रेडिंग एक ही समय में कई थ्रेड चलाने का तंत्र है। जावा जैसी प्रोग्रामिंग भाषाएं मल्टीथ्रेडिंग का समर्थन करती हैं। मल्टीथ्रेडिंग के फायदे हैं क्योंकि यह एक साथ कई थ्रेड्स को चलाने की अनुमति देता है और थ्रेड्स एक दूसरे से स्वतंत्र होते हैं। जावा में ऐसे तरीके हैं जिनका उपयोग मल्टीथ्रेडिंग के लिए किया जा सकता है। उनमें से दो सो रहे हैं और प्रतीक्षा कर रहे हैं।

जावा में स्लीप क्या है?

एक ऑपरेटिंग सिस्टम में कई प्रक्रियाएं चल रही हैं। एक प्रक्रिया निष्पादन में एक कार्यक्रम है। प्रत्येक प्रक्रिया में कई थ्रेड हो सकते हैं, और इन थ्रेड्स के बीच एक संदर्भ स्विचिंग होती है। जावा में, थ्रेड बनाने के दो तरीके हैं। वह है थ्रेड क्लास का विस्तार करना या रननेबल इंटरफ़ेस को लागू करना। थ्रेड क्लास में एक थ्रेड पर ऑपरेशन बनाने और करने के लिए कंस्ट्रक्टर और विधियाँ होती हैं। थ्रेड क्लास ऑब्जेक्ट क्लास का विस्तार करता है और रननेबल इंटरफ़ेस लागू करता है। रननेबल इंटरफ़ेस को किसी भी वर्ग द्वारा कार्यान्वित किया जाना चाहिए जिसका उदाहरण थ्रेड द्वारा निष्पादित करने का इरादा है।जब थ्रेड निष्पादित होता है, तो जिस कोड को निष्पादित करना चाहिए वह रन विधि के अंदर लिखा जाता है। जो थ्रेड चलना चाहिए वह थ्रेड शेड्यूलर द्वारा चुना जाता है। एक प्रक्रिया में केवल एक धागा चलता है।

एक धागा कई चरणों से गुजरता है। थ्रेड क्लास का ऑब्जेक्ट बनाने के बाद, प्रोग्रामर स्टार्ट मेथड को इनवाइट कर सकता है। उस विधि को लागू करने से पहले, थ्रेड को नई स्थिति में कहा जाता है। थ्रेड शेड्यूलर चलाने के लिए थ्रेड का चयन करता है। यदि थ्रेड शेड्यूलर द्वारा अभी तक थ्रेड का चयन नहीं किया गया है, लेकिन यदि प्रारंभ विधि लागू की जाती है, तो थ्रेड चलने योग्य स्थिति में है। थ्रेड शेड्यूलर निष्पादित करने के लिए थ्रेड का चयन करने के बाद, यह चालू स्थिति में स्थानांतरित हो जाता है। यदि धागा जीवित है, लेकिन वर्तमान में चलने के योग्य नहीं है, तो यह गैर-चलाने योग्य या अवरुद्ध अवस्था में है। रन विधि के पूरा होने के बाद, थ्रेड समाप्त स्थिति में चला जाता है। ये धागे के जीवन चक्र के मुख्य चरण हैं।

विभिन्न कार्यों को करने के लिए थ्रेड क्लास में विभिन्न विधियाँ उपलब्ध हैं।स्लीप विधि का उपयोग विधि को एक विशिष्ट समय के लिए सोने के लिए किया जाता है। स्लीप विधि के लिए सिंटैक्स सार्वजनिक शून्य नींद (लंबी मिलीसेकंड) इंटरप्टेड एक्सेप्शन फेंकता है। यह वर्तमान में निष्पादित थ्रेड को मिलीसेकंड की निर्दिष्ट संख्या के लिए अस्थायी रूप से निष्पादन को रोकने का कारण बनता है। यदि कोई अन्य थ्रेड वर्तमान थ्रेड को बाधित करता है, तो इस अपवाद को फेंकने पर वर्तमान थ्रेड की बाधित स्थिति साफ़ हो जाती है।

जावा में नींद और प्रतीक्षा के बीच अंतर
जावा में नींद और प्रतीक्षा के बीच अंतर

चित्र 01: नींद विधि के साथ जावा प्रोग्राम

उपरोक्त कार्यक्रम के अनुसार, रन विधि में कोड होता है जिसे निष्पादित किया जाना चाहिए। मुख्य कार्यक्रम में, exampleThread1 के दो ऑब्जेक्ट बनाए जाते हैं, और उन पर प्रारंभ विधियों को लागू किया जाता है। यह रन विधि के अंदर कोड को चलाने की अनुमति देगा। एक समय में केवल एक धागा निष्पादित होता है। धागे के साथ।नींद (1000); पहले थ्रेड को 1000 मिलीसेकंड के लिए निष्पादन समाप्त करने की अनुमति देगा। जब एक थ्रेड सो रहा होता है, तो थ्रेड शेड्यूलर दूसरे थ्रेड को उठाता है।

जावा में प्रतीक्षा क्या है?

एक से अधिक थ्रेड एक साझा संसाधन तक पहुंच सकते हैं। यह गलत आउटपुट उत्पन्न करने का कारण बन सकता है। साझा संसाधन तक पहुँचने के लिए केवल एक थ्रेड बनाने के लिए थ्रेड सिंक्रोनाइज़ेशन का उपयोग किया जा सकता है। एक स्थिति को इस प्रकार मानें। यदि, t1 और t2 के रूप में दो थ्रेड हैं, तो t1 टेक्स्ट फ़ाइल में मानों को सहेजना प्रारंभ करें जिसे Text1.txt कहा जाता है। t1 के वापस आने पर उन मानों का उपयोग किसी अन्य गणना के लिए किया जाएगा। यदि t2 t1 के लौटने से पहले शुरू होता है, तो t2 t1 द्वारा सहेजे गए मानों को बदल सकता है। यह t1 को गलत आउटपुट प्रदान करने का कारण बन सकता है। सिंक्रोनाइज़ेशन की मदद से, जब t1 Text1.txt फ़ाइल का उपयोग करना शुरू करता है, तो उस फ़ाइल को लॉक किया जा सकता है, इसलिए यह केवल t1 द्वारा ही पहुँचा जा सकता है। t2 इसे तब तक नहीं बदल सकता जब तक t1 उस टेक्स्ट फ़ाइल को एक्सेस करने के लिए लॉक जारी नहीं करता। जब कार्य पूरा हो जाता है तो t1 लॉक जारी कर सकता है। लॉक को मॉनिटर के नाम से भी जाना जाता है।

थ्रेड सिंक्रोनाइज़ेशन इंटर-थ्रेड कम्युनिकेशन द्वारा प्राप्त किया जा सकता है। एक महत्वपूर्ण खंड एक कोड खंड है जो साझा संसाधनों तक पहुंचता है। इंटर-थ्रेड कम्युनिकेशन में, एक थ्रेड को उसके क्रिटिकल सेक्शन में चलना बंद कर दिया जाता है, और दूसरे थ्रेड को उसी क्रिटिकल सेक्शन में प्रवेश करने की अनुमति दी जाती है जिसे निष्पादित किया जाना है। इसे प्रतीक्षा करें, सूचित करें और सभी विधियों को सूचित करें का उपयोग करके कार्यान्वित किया जाता है। वे वस्तु वर्ग से संबंधित हैं। प्रतीक्षा विधि का उपयोग वर्तमान थ्रेड को लॉक जारी करने की अनुमति देने के लिए किया जाता है और तब तक प्रतीक्षा करें जब तक कि कोई अन्य थ्रेड ऑब्जेक्ट के लिए सूचित या सूचित नहीं करता है। लॉक की प्रतीक्षा कर रहे एकल थ्रेड को जगाने के लिए सूचना विधि का उपयोग किया जाता है। InformAll उन सभी थ्रेड्स को जगाता है जो लॉक पर प्रतीक्षा कर रहे हैं।

जावा में नींद और प्रतीक्षा के बीच अंतर_चित्र 02
जावा में नींद और प्रतीक्षा के बीच अंतर_चित्र 02

चित्र 02: कैलकुलेटर वर्ग

जावा में नींद और प्रतीक्षा के बीच महत्वपूर्ण अंतर
जावा में नींद और प्रतीक्षा के बीच महत्वपूर्ण अंतर

चित्र 03: मुख्य विधि

कैलकुलेटर वर्ग थ्रेड का विस्तार करता है। सिंक्रोनाइज़्ड ब्लॉक रन विधि के अंदर है। लूप के लिए और सूचना विधि सिंक्रनाइज़ ब्लॉक के अंदर है। मुख्य विधि के अंदर, बनाए गए धागे का एक उदाहरण और उस उदाहरण पर प्रारंभ विधि को कॉल किया जाता है। मुख्य विधि तब तक प्रतीक्षा करेगी जब तक कि थ्रेड एक सूचना न दे दे। प्रोग्राम को निष्पादित करते समय, मुख्य विधि रन विधि के संपूर्ण निष्पादन तक प्रतीक्षा करती है और सूचना विधि की प्रतीक्षा करती है। एक बार सूचना विधि को कॉल करने के बाद, मुख्य विधि प्रतीक्षा करना बंद कर देती है और शेष कोड को निष्पादित करना शुरू कर देती है। मुख्य कैलकुलेटर थ्रेड पूरा होने तक प्रतीक्षा कर रहा है। अंत में, योग का परिणाम मुद्रित होता है।

यदि कोई सिंक्रोनाइज़्ड ब्लॉक नहीं है और यदि मुख्य विधि में नीचे जैसा कोड है, तो यह आउटपुट को शून्य के रूप में देगा क्योंकि यह दूसरे थ्रेड के पूरा होने की प्रतीक्षा नहीं कर रहा है।

कैलकुलेटर t1=नया कैलकुलेटर ();

t1. प्रारंभ ();

System.out.println (t1.sum);

जावा में नींद और प्रतीक्षा में क्या समानता है?

नींद और प्रतीक्षा दोनों ही ऐसे तरीके हैं जिनका उपयोग जावा में मल्टीथ्रेडिंग को लागू करते समय किया जा सकता है

जावा में नींद और प्रतीक्षा में क्या अंतर है?

जावा में नींद बनाम प्रतीक्षा

स्लीप विधि वर्तमान थ्रेड को मिलीसेकंड की निर्दिष्ट संख्या के लिए निष्पादन को निलंबित करने का कारण बनती है, जो सिस्टम टाइमर और शेड्यूलर की सटीकता और सटीकता के अधीन है। प्रतीक्षा विधि वर्तमान थ्रेड को तब तक प्रतीक्षा करने का कारण बनती है जब तक कि कोई अन्य थ्रेड ऑब्जेक्ट के लिए सूचित या सूचित नहीं करता।
लॉक के साथ जुड़ाव
स्लीप मेथड सिंक्रोनाइज़ेशन के दौरान किसी ऑब्जेक्ट पर लॉक को रिलीज़ नहीं करता है। सिंक्रनाइज़ेशन के दौरान प्रतीक्षा विधि लॉक को रिलीज़ करती है।
निष्पादन का तरीका
स्लीप मेथड को वर्तमान थ्रेड पर निष्पादित किया जाता है। ऑब्जेक्ट पर प्रतीक्षा विधि को कॉल किया जाता है।
एसोसिएटेड क्लास
स्लीप थ्रेड क्लास की एक विधि है। प्रतीक्षा ऑब्जेक्ट क्लास का एक तरीका है।
समापन
नींद की प्रक्रिया निर्दिष्ट समय की समाप्ति के बाद पूरी होती है। सभी विधियों को सूचित या सूचित करने पर कॉल करने से प्रतीक्षा विधि बाधित होती है।

सारांश - जावा में नींद बनाम प्रतीक्षा

ऑपरेटिंग सिस्टम पर कई प्रक्रियाएं चल रही हैं। प्रत्येक प्रक्रिया में कई धागे हो सकते हैं। एक थ्रेड ऑपरेटिंग सिस्टम में प्रोसेसिंग की सबसे छोटी इकाई है। जावा प्रोग्रामिंग भाषा मल्टीथ्रेडिंग का समर्थन करती है। यह एक साथ कई थ्रेड चलाने की अनुमति देता है। नींद और प्रतीक्षा दो विधियाँ हैं जिनका उपयोग मल्टी-थ्रेडिंग को लागू करते समय किया जा सकता है। जावा में नींद और प्रतीक्षा के बीच का अंतर यह है कि, नींद का उपयोग वर्तमान थ्रेड के निष्पादन को मिलीसेकंड की निर्दिष्ट संख्या के लिए निलंबित करने के लिए किया जाता है जबकि प्रतीक्षा विधि का उपयोग वर्तमान थ्रेड को तब तक प्रतीक्षा करने के लिए किया जाता है जब तक कि कोई अन्य थ्रेड सूचित या सूचित नहीं करता है। वस्तु के लिए विधि।

सिफारिश की: