thread sleep thread sleep method java with examples
इस ट्यूटोरियल में, हम जावा में थ्रेड स्लीप () विधि पर चर्चा करेंगे। हम देखेंगे कि कैसे उदाहरण के लिए Thread.Sleep () विधि काम करती है:
java.lang.Thread.sleep (लंबी मिलिस) विधि थ्रेड क्लास द्वारा प्रदान की गई विधि है जो वर्तमान में चलने वाले धागे को सोने के लिए रखती है। हम नींद के समय को नींद की विधि के तर्क के रूप में निर्दिष्ट करेंगे।
=> यहाँ जावा शुरुआती गाइड पर एक नज़र रखना।
आप क्या सीखेंगे:
थ्रेड स्लीप () जावा में विधि
जावा का थ्रेड वर्ग नींद विधि के दो प्रकार प्रदान करता है।
नींद के दोनों प्रकारों () विधि का प्रोटोटाइप नीचे वर्णित है।
# 1) स्लीप मेथड वेरिएंट # 1
प्रोटोटाइप: सार्वजनिक स्थैतिक शून्य नींद (लंबी मिली) इंटरप्टेड अपवाद को फेंकता है
पैरामीटर: मिलिस => मिलीसेकंड में समय की अवधि जिसके लिए धागा सोता है।
प्रतिलाभ की मात्रा: शून्य
फेंकता है:
- गैर-कानूनी मान्यता = = यदि मिली नकारात्मक है
- InterruptedException => यदि कोई अन्य धागा वर्तमान थ्रेड को बाधित करता है। जब यह अपवाद होता है, तो थ्रेड की बाधित स्थिति साफ़ हो जाती है।
विवरण: नींद की विधि की यह भिन्नता वर्तमान धागे को सोने के लिए बनाती है या दी गई संख्या (मिली तर्क में प्रदान) के लिए अस्थायी रूप से इसके निष्पादन को रोक देती है। हालांकि, सोते समय, धागा मॉनिटर या लॉक स्वामित्व को नहीं खोता है।
# 2) स्लीप मेथड वेरिएंट # 2
प्रोटोटाइप: सार्वजनिक स्थैतिक शून्य नींद (लंबी मिली, इंट नेनो) इंटरप्रोडेप्शन को फेंकता है
पैरामीटर:
कैसे जावा में एक ढेर बनाने के लिए
- मिलिस => मिलीसेकंड में अवधि जिसके लिए धागे को सोना पड़ता है।
- नैनो => अतिरिक्त नैनोसेकंड जिसके लिए धागा सो सकता है। रेंज 0 - 999999 है।
प्रतिलाभ की मात्रा: शून्य
फेंकता है:
- अवैध यदि मिल का मान ऋणात्मक या नैनो मान है तो सीमा से बाहर।
- रुकावट। अपवाद => यदि कोई अन्य धागा वर्तमान थ्रेड को बाधित करता है। इस अपवाद के होने पर थ्रेड की बाधित स्थिति साफ़ हो जाती है।
विवरण: नींद की विधि के इस प्रकार के कारण यह धागा सोने के लिए आह्वान करता है या दी गई संख्या के लिए अस्थायी रूप से इसके निष्पादन को रोक देता है। (मेथड कॉल में पहला तर्क)। इसके अलावा, इसने सोने के लिए नैनोसेकंड (विधि कॉल में दूसरा तर्क) की संख्या भी प्रदान की।
ध्यान दें कि निर्दिष्ट समय की सटीकता और सटीकता सिस्टम टाइमर्स और शेड्यूलर्स पर निर्भर करती है। जब धागा सो रहा होता है, तो लॉक या मॉनिटर का स्वामित्व नहीं बदला जाता है।
थ्रेड की कार्य विधि। सो विधि
जब भी कोई धागा सोता है या उसे निलंबित किया जाता है, तो यह अनुसूचक द्वारा किया जाता है। विधि Thread.sleep () थ्रेड शेड्यूलर के साथ संचार करता है ताकि शेड्यूलर वर्तमान में चल रहे थ्रेड को दिए गए अवधि के लिए राज्य की प्रतीक्षा करने के लिए बदल सकता है।
एक बार जब यह निर्दिष्ट समय समाप्त हो जाता है, तो थ्रेड की स्थिति को 'रननीय' में बदल दिया जाता है, ताकि वह सीपीयू के निष्पादन के लिए आगे बढ़ने का इंतजार कर सके।
इस प्रकार धागा कितने समय तक सोता है यह शेड्यूलर पर निर्भर करता है न कि विधि पर। चूंकि शेड्यूलर ऑपरेटिंग सिस्टम का एक हिस्सा है, इसलिए ओएस आर्किटेक्चर थ्रेड के राज्य परिवर्तनों में भी भूमिका निभाता है।
अब जब हमने थ्रेड। स्लीप () विधि को विस्तार से देखा है, तो हमें इस पद्धति का उपयोग करते समय कुछ बिंदुओं को ध्यान में रखना चाहिए।
संकेत शामिल करें:
# 1) थ्रेड.स्लीप () विधि हमेशा वर्तमान थ्रेड के निष्पादन को रोकती है।
#दो) वह वास्तविक अवधि जिसके लिए थ्रेड सोता है, शेड्यूलर और सिस्टम टाइमर पर निर्भर करता है।
उदाहरण के लिए, एक बहुत व्यस्त प्रणाली के लिए, थ्रेड का सोने का समय निर्दिष्ट की तुलना में अधिक लंबा हो सकता है, जबकि सिस्टम के लिए जो इतना व्यस्त नहीं है, यह एक निर्दिष्ट समय के पास कम या ज्यादा हो सकता है।
# 3) जब थ्रेड सो रहा होता है, तो यह सोने से पहले किसी भी लॉक या मॉनिटर को नहीं खोता है।
# 4) नींद में जो मौजूदा धागा है, वह किसी अन्य धागे से बाधित हो सकता है। इस मामले में, 'InterruptedException' फेंक दिया जाता है।
Thread.sleep उदाहरण जावा में
आइए अब एक उदाहरण पर चलते हैं जो नींद की विधि को प्रदर्शित करता है। यहां, हमारे पास एक थ्रेड क्लास है जिसमें एक रन () विधि है। रन () पद्धति में हम (थ्रेड.स्लीप (1000) ’कहते हैं। फिर मुख्य कार्य में, हम इस धागे के दो उदाहरण बनाते हैं यानी दो धागे। हम तो धागे शुरू करते हैं।
आउटपुट में, हम देखते हैं कि जैसे दोनों थ्रेड चल रहे हैं, थ्रेड्स एक के बाद एक शेड्यूल किए जाते हैं यानी जब एक सोता है तो दूसरा चल रहा होता है।
पाठ सॉफ्टवेयर के लिए सबसे अच्छी आवाज
उदाहरण:
class SleepThread extends Thread { //run method for thread public void run() { for(int i=1;i<5;i++) { try { //call sleep method of thread Thread.sleep(1000); }catch(InterruptedException e){System.out.println(e);} //print current thread instance with loop variable System.out.println(Thread.currentThread().getName() + ' : ' + i); } } } class Main{ public static void main(String args()) { //create two thread instances SleepThread thread_1 = new SleepThread(); SleepThread thread_2 = new SleepThread(); //start threads one by one thread_1.start(); thread_2.start(); } }
आउटपुट:
जब हम आउटपुट का निरीक्षण करते हैं, तो हम पाते हैं कि थ्रेड_0 और थ्रेड_1 निष्पादित करने के लिए बदल जाते हैं।
थ्रेड.स्लीप () नकारात्मक नींद के समय मूल्य के साथ
इसके बाद, Thread.sleep () विधि का एक और उदाहरण प्रदर्शित करते हैं। यहां हमने एक नकारात्मक नींद के समय के विशेष मामले पर विचार किया है। कार्यक्रम उपरोक्त कार्यक्रम के समान है, लेकिन प्रदान किया गया नींद का समय -500 है।
उदाहरण:
class SleepThread extends Thread { public void run() { for(int i=1;i<5;i++) { try { //call sleep method with negative value of time Thread.sleep(-500); }catch(InterruptedException e){System.out.println(e);} System.out.println(i); } } } class Main{ public static void main(String args()) { //create two thread instances SleepThread t1=new SleepThread(); SleepThread t2=new SleepThread(); //start the threads one by one t1.start(); t2.start(); } }
आउटपुट:
आउटपुट से, हम देख सकते हैं कि विधि ने gal IllegalArgumentException ’को फेंक दिया है क्योंकि नींद के समय का नकारात्मक मूल्य स्वीकार्य नहीं है।
बार बार पूछे जाने वाले प्रश्न
Q # 1) जावा में थ्रेड स्लीप कैसे काम करता है?
उत्तर: जब मिलीसेकंड में एक निर्दिष्ट समय के साथ थ्रेड पर नींद () को बुलाया जाता है, तो थ्रेड इसके निष्पादन को समाप्त कर देता है। यह सीपीयू से छुटकारा दिलाता है। इस प्रकार, उस अवधि के दौरान जब धागा सो रहा होता है, अन्य थ्रेड्स CPU का उपयोग कर सकते हैं।
प्रश्न # 2) थ्रेड जावा में उपज () और स्लीप () क्या है?
उत्तर: थ्रेड की नींद () विधि थ्रेड को सीपीयू से छुटकारा दिलाती है और निष्पादन को रोकती है। जबकि यह धागा सोता है, अन्य धागे सीपीयू का अधिग्रहण करते हैं। यह शेड्यूलर द्वारा किया जाता है।
उपज () विधि भी थ्रेड को सीपीयू नियंत्रण का कारण बनता है जब कहा जाता है लेकिन नींद () विधि उपज () की तुलना में अधिक निर्धारित व्यवहार प्रदर्शित करती है।
Q # 3) आप एक जावा थ्रेड को सोने से कैसे रोक सकते हैं?
कैसे सी + + में स्थिर चर शुरू करने के लिए
उत्तर: हम बाधा () विधि का उपयोग करके जावा थ्रेड को सोने से रोकते हैं। थ्रेड क्लास के इंटरप्ट () विधि को लागू करने से किसी भी धागे का इंतजार किया जा रहा है या सो रहा है।
क्यू # 4) क्या हम जावा में एक धागा मार सकते हैं?
उत्तर: नहीं, जावा में धागा नहीं मारा गया है। इसके बजाय, जावा में धागा बंद कर दिया गया है। धागा समाप्त हो गया है और फिर इनायत से बंद हो सकता है। हम अक्सर एक अस्थिर बूलियन क्षेत्र का उपयोग करते हैं जो समय-समय पर मूल्यों में किसी भी बदलाव के लिए जाँच की जाती है, ताकि हम धागे को समाप्त कर सकें।
क्यू # 5) नींद क्यों है () एक स्थिर विधि?
उत्तर: थ्रेड को सोने के लिए स्लीप () विधि कहते समय, हम इसे थ्रेड क्लास का उपयोग करके हमेशा कहते हैं।
उदाहरण के लिए , थ्रेड.स्लीप (1000);
उपरोक्त कॉल वर्तमान थ्रेड संदर्भ में काम करता है और वर्तमान थ्रेड को सोने के लिए रखता है। हम कभी भी किसी विशिष्ट थ्रेड उदाहरण का उपयोग करके विधि नहीं कहते हैं। इस प्रकार विधि स्थिर है।
निष्कर्ष
इस ट्यूटोरियल में, हमने जावा में थ्रेड्स की नींद () विधि पर चर्चा की है। नींद () विधि वर्तमान थ्रेड का कारण बनती है जो नींद की विधि के तर्क के रूप में प्रदान की गई समय की एक निर्दिष्ट राशि के लिए अपने निष्पादन को रोकती है।
सिस्टम अनुसूचक नींद की विधि के साथ प्रतीक्षा स्थिति में वर्तमान धागा लगाने के लिए काम करता है। जबकि थ्रेड सो रहा है, यह ताले या मॉनिटर के पास जारी है जो इसे हासिल कर चुका है। जब हम सोने के समय को सोने के तरीके के लिए नकारात्मक मान देते हैं, तो यह gal IllegalArgumentException ’को फेंक देता है।
जब हम स्लीप () विधि के लिए एक वैध स्लीप टाइम वैल्यू पास करते हैं, तो अन्य थ्रेड्स निष्पादित करने के लिए टर्न लेंगे जबकि करंट थ्रेड सोता है।
=> जावा प्रशिक्षण ट्यूटोरियल के ए-जेड को देखने के लिए यहां देखें।
अनुशंसित पाठ
- जावा में मल्टीथ्रेडिंग - उदाहरण के साथ ट्यूटोरियल
- उदाहरणों के साथ C ++ में गुणा करना
- जावा सिंक्रोनाइज़्ड: जावा में थ्रेड सिंक्रोनाइज़ेशन क्या है
- जावा थ्रेड्स विथ मेथड्स एंड लाइफ साइकल
- जावा स्ट्रिंग ट्यूटोरियल | उदाहरण के साथ जावा स्ट्रिंग के तरीके
- कैसे करें Java toString तरीके का इस्तेमाल?
- जावा में ट्रीमैप - ट्यूटोरियल जावा ट्रीपैप उदाहरणों के साथ
- जावा ट्यूटोरियल फॉर बिगिनर्स: 100+ हैंड्स-ऑन जावा वीडियो ट्यूटोरियल