Recent Posts

header ads

10 Important Points For Threads In Java In Hindi - Creak Java Interview

Threads in java :-

 1. जावा में थ्रेड निष्पादन के एक स्वतंत्र पथ का प्रतिनिधित्व करता है। (क्लासिक परिभाषा लेकिन मुझे अभी भी पसंद है)। थ्रेड द्वारा दर्शाया गया है



2. अपने जीवन काल के दौरान विभिन्न थ्रेड स्टेट्स जैसे NEW, RUNNABLE, BLOCKED, WAITING, TIMED_WAITING पर थ्रेड रहता है जो बताता है कि थ्रेड क्या कर रहा है।

10 Important Points For Threads In Java In Hindi
10 Important Points For Threads In Java In Hindi - Creak Java Interview

NEW का अर्थ है थ्रेड बस बनाया गया है लेकिन अभी तक नहीं बताया गया है, RUNNABLE का अर्थ है थ्रेड शुरू किया गया है

 लेकिन थ्रेड शेड्यूलर द्वारा सीपीयू के लिए प्रतीक्षा की जा रही है। ब्लॉक किया गया, प्रतीक्षा कर रहा है और TIMED_WAITING का अर्थ है कि धागा कुछ भी नहीं कर रहा है इसके बजाय अवरुद्ध हो गया है और IO के समाप्त होने की प्रतीक्षा कर रहा है, कक्षा या ऑब्जेक्ट लॉक, या किसी अन्य धागे आदि।

3. Java daemon or non daemon (जिसे उपयोगकर्ता सूत्र भी कहा जाता है) में दो प्रकार के थ्रेड होते हैं। 

जावा प्रोग्राम तब तक चलता है जब तक कि कम से कम एक गैर-डेमॉन thread मौजूद न हो।

 जेवीएम द्वारा शुरू किया गया पहला गैर-डेमन धागा मुख्य धागा है जो जेवीएम द्वारा बनाया गया है और जावा में मुख्य विधि के अंदर कोड निष्पादित करने के लिए जिम्मेदार है। इसे हॉटस्पॉट वर्चुअल मशीन में "VM thread" कहा जाता है। 

Java.lang.Thread start () मेथड से मुख्य थ्रेड का उपयोग करके बनाया गया कोई भी धागा डिफ़ॉल्ट नॉन-डेमन द्वारा है, लेकिन आप सेटडोमन (ट्रू) विधि को कॉल करके इसे डेमन बना सकते हैं। जावा में नया बनाया गया थ्रेड से डेमन प्रॉपर्टी को विरासत में मिला है जो इसे बनाता है। चूंकि मुख्य thread गैर-डेमॉन है, इसलिए डिफ़ॉल्ट रूप से इसके द्वारा बनाया गया कोई भी thread गैर-डेमॉन बना हुआ है।

threads in java 4. हर जावा थ्रेड में प्राथमिकता और नाम होता है। जावा में java.lang.Thread क्लास की ऑब्जेक्ट बनाते समय आप प्राथमिकता निर्धारित कर सकते हैं और सार्थक नाम निर्दिष्ट कर सकते हैं। 

इसकी सलाह देते हैं कि इसे बनाते समय हर धागे को एक सार्थक नाम दिया जाए, यह बाद में मदद करता है जब आप अपने जावा प्रोग्राम को डीबग करते हैं या विश्लेषण के लिए थ्रेड डंप लेते हैं। अन्यथा जावा आपके थ्रेड को "Thread-number" की तरह डिफ़ॉल्ट नाम देगा, यदि थ्रेड  java.lang.Thread या "pool-number-thread-number" का उपयोग करके बनाया गया है, यदि थ्रेड का उपयोग थ्रेडफैक्ट्री का उपयोग करके बनाया गया है।

 जावा में उच्च प्राथमिकता वाले थ्रेड को प्राथमिकता में कम प्राथमिकता वाले धागे पर वरीयता मिलती है। आप थ्रेड क्लास से getProiroty () जैसी विधि का उपयोग करके प्राथमिकता की जांच कर सकते हैं।

5. थ्रेड का निर्माण एक समय लेने वाला काम है इसलिए समवर्ती कार्य करने के लिए थ्रेड पूल होने से प्रदर्शन और मापनीयता की आधुनिक आवश्यकता है।

 जावा 5 एक्ज़ीक्यूटर फ्रेमवर्क प्रदान करता है जो एप्लिकेशन कोड से थ्रेड बनाने और प्रबंधित करने के कार्य को एन्क्रिप्ट करता है। 

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

6. Thread.sleep() विधि का उपयोग निर्दिष्ट अवधि के लिए थ्रेड को रोकने के लिए किया जाता है।

 यह java.lang.Thread क्लास में परिभाषित एक अधिभार विधि है। दूसरी ओर Thread.join () को चलाने से पहले अपने काम को पूरा करने के लिए दूसरे thread का इंतजार करने के लिए उपयोग किया जाता है और yield() विधि का उपयोग सीपीयू को त्यागने के लिए किया जाता है ताकि अन्य धागा इसे प्राप्त कर सकें। विवरण के लिए नींद, प्रतीक्षा और उपज के बीच अंतर देखें।

threads in java in Hindi 7. wait()और
notify() विधियों का उपयोग दो थ्रेड्स के बीच संवाद करने के लिए किया जाता है यानी जावा में इंटर थ्रेड कम्युनिकेशन के लिए। 

हमेशा लूप में प्रतीक्षा की wait() विधि की जांच करें और उन्हें सिंक्रनाइज़ संदर्भ से कॉल करें। wait() एक विधि है जिसे ऑब्जेक्ट क्लास में परिभाषित किया गया है, 

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

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

8. थ्रेड शेड्यूलिंग थ्रेड शेड्यूलर द्वारा किया जाता है जो प्लेटफॉर्म पर निर्भर है और JVM के अंदर रहता है। 

जावा से थ्रेड शेड्यूलर को नियंत्रित करने का कोई ज्ञात तरीका नहीं है और थ्रेड से संबंधित कई निर्णय शेड्यूलर द्वारा किया जाता है जैसे कि यदि कई थ्रेड्स प्रतीक्षा कर रहे हैं तो कौन सा थ्रेड सीपीयू से सम्मानित किया जाएगा।

9. Thread.isActive () विधि का उपयोग यह जांचने के लिए किया जाता है कि कोई थ्रेड सक्रिय है या नहीं। किसी थ्रेड को तब तक सक्रिय रहने के लिए कहा जाता है जब तक कि वह run() विधि से सामान्य रूप से या किसी अपवाद के कारण वापस नहीं आ जाता है। 

Thread.holdsLock() विधि का उपयोग यह जांचने के लिए किया जाता है कि थ्रेड लॉक है या नहीं। देखें कि अधिक विवरण के लिए thread लॉक है या नहीं, इसकी जांच कैसे करें।

threads in java 10. जावा में प्रत्येक थ्रेड का अपना स्टैक है, जिसका उपयोग स्थानीय चर और विधि कॉल को संग्रहीत करने के लिए किया जाता है। -एक्सएक्स का उपयोग करके इस स्टैक के आकार को नियंत्रित किया जा सकता है:
XX:ThreadStackSize  JVM विकल्प उदा। -XX:ThreadStackSize=512

 

11. जावा 5 ने कॉल करने योग्य इंटरफ़ेस का उपयोग करके जावा में थ्रेड्स के लिए कार्य को परिभाषित करने का एक और तरीका पेश किया। 

यह Runnable इंटरफ़ेस के समान है लेकिन कुछ और क्षमता प्रदान करता है उदा। यह कार्य निष्पादन के परिणाम को लौटा सकता है,

 जो रननेबल में संभव नहीं था, क्योंकि वापसी प्रकार का रन () विधि शून्य था। अपने पूर्ववर्ती की तरह यह एक call() पद्धति को परिभाषित करता है जो Future<T>ऑब्जेक्ट, आप कार्य निष्पादन का परिणाम प्राप्त करने के लिए इस ऑब्जेक्ट पर get() विधि कह सकते हैं। Callable के बारे में अधिक जानने के लिए, कृपया Java में Runnable और Callable इंटरफ़ेस के बीच अंतर देखें।

12. जावा जावा में एक थ्रेड को बाधित करने के लिए इंटरप्ट () विधि प्रदान करता है। आप running thread, waiting thread or sleep thread को बाधित कर सकते हैं। 

यह वह नियंत्रण है जो जावा एक अवरुद्ध या लटके हुए धागे को रोकने के लिए प्रदान करता है।

 एक बार जब आप किसी थ्रेड को बाधित करते हैं, तो यह इंटरप्टेड एक्ससेप्शन को भी फेंक देगा, जो यह सुनिश्चित करने के लिए एक जांचा गया अपवाद है कि आपका कोड हैंडल इंटरप्ट को लेना चाहिए

Post a Comment

0 Comments