
मैं एक मल्टी थ्रेड जावा एप्लिकेशन को कनेक्ट करने के लिए विजुअल वीएम का उपयोग करता हूं, थ्रेड में 4 स्थिति है, अर्थात् रनिंग, स्लीप, वेट, मॉनिटर। इस निगरानी स्थिति का क्या अर्थ है? प्रतीक्षा और मॉनिटर के बीच अंतर क्या है?
जवाबों:
ये अवस्थाएं वैसी ही हैं जैसा कि Thread.Stateएनम में उल्लिखित है । "प्रतीक्षा" का अर्थ है, जैसा कि प्रलेखन कहता है:
निम्न विधियों में से एक को कॉल करने के कारण एक धागा प्रतीक्षा की स्थिति में है:
- Object.wait बिना किसी टाइमआउट के
- कोई टाइमआउट के साथ
- LockSupport.park
"मॉनिटर" वह BLOCKEDस्थिति है, जिसमें थ्रेड किसी ऑब्जेक्ट पर लॉक प्राप्त करने के लिए प्रतीक्षा कर रहा है (क्योंकि यह एक synchronizedब्लॉक या विधि में प्रवेश करने की कोशिश कर रहा है, जबकि दूसरा धागा पहले से ही संबंधित लॉक रखता है)।
sleepingऔर waitingदिखाया गया है?
मॉनिटर का अर्थ होगा कि थ्रेड किसी ऑब्जेक्ट पर लॉक प्राप्त करने के लिए प्रतीक्षा कर रहा है। उदाहरण के लिए जब एक थ्रेड एक सिंक्रनाइज़ेशन विधि चला रहा होता है और दूसरा व्यक्ति उसी ऑब्जेक्ट पर इसे लागू करने की कोशिश करता है, तो यह तब तक नहीं होगा जब तक कि विधि का पहला आह्वान समाप्त नहीं हो जाता। ऐसा इसलिए है क्योंकि पहले धागे में उस ऑब्जेक्ट पर एक मॉनिटर या लॉक होता है, इसलिए दूसरे को जारी होने तक इंतजार करना होगा।
से ओरेकल थ्रेडिंग ट्यूटोरियल :
"सिंक्रोनाइज़ेशन को आंतरिक इकाई के रूप में जाना जाता है जिसे आंतरिक लॉक या मॉनिटर लॉक के रूप में बनाया जाता है। (एपीआई विनिर्देश अक्सर इस इकाई को" मॉनिटर "के रूप में संदर्भित करता है) आंतरिक लॉकेशन सिंक्रनाइज़ेशन के दोनों पहलुओं में एक भूमिका निभाते हैं: विशेष एक्सेस को एन्हांस करते हुए। ऑब्जेक्ट की स्थिति और स्थापना होती है-रिश्तों से पहले जो दृश्यता के लिए आवश्यक हैं। "