जावा में समवर्ती प्रोग्रामिंग में संदर्भित एक मॉनिटर क्या है?
जब मैंने पढ़ा कि "प्रत्येक वस्तु ने एक मॉनिटर को संबद्ध किया है" तो इसका क्या अर्थ है?
क्या यह एक विशेष वस्तु है?
जावा में समवर्ती प्रोग्रामिंग में संदर्भित एक मॉनिटर क्या है?
जब मैंने पढ़ा कि "प्रत्येक वस्तु ने एक मॉनिटर को संबद्ध किया है" तो इसका क्या अर्थ है?
क्या यह एक विशेष वस्तु है?
जवाबों:
किसी वस्तु पर समवर्ती पहुंच को नियंत्रित करने के लिए एक मॉनिटर तंत्र है।
यह आपको करने की अनुमति देता है:
धागा 1:
public void a()
{
synchronized(someObject) {
// do something (1)
}
}
धागा 2:
public void b()
{
synchronized(someObject) {
// do something else (2)
}
}
यह थ्रेड्स 1 और 2 को एक ही समय में मॉनिटर किए गए (सिंक्रनाइज़) अनुभाग तक पहुंचने से रोकता है। एक शुरू हो जाएगा, और मॉनिटर दूसरे को पहले खत्म होने से पहले क्षेत्र तक पहुंचने से रोक देगा।
यह कोई विशेष वस्तु नहीं है। यह श्रेणीबद्ध पदानुक्रम रूट पर रखा गया सिंक्रनाइज़ेशन तंत्र है java.lang.Object
:।
ऐसे भी तरीके wait
और notify
तरीके हैं जो विभिन्न थ्रेड्स के बीच संचार के लिए ऑब्जेक्ट के मॉनिटर का भी उपयोग करेंगे।
Class
स्थिर तरीकों के लिए संबंधित वस्तु। यदि आपके पास पहले से ही एक सिंक्रोनाइज़्ड मेथड 1 () है और आप मेथड 2 घोषित करते हैं, तो कोई भी नया मॉनीटर नहीं बनाया जाता है और वास्तव में या तो मेथड (उसी ऑब्जेक्ट पर) इन्क मॉनिटर को लॉक करने का प्रयास करेगा। यह अक्सर नए लोगों को पकड़ता है।
एक मॉनिटर एक इकाई है जिसमें एक लॉक और एक प्रतीक्षा सेट दोनों होते हैं । जावा में, कोई भी Object
एक मॉनिटर के रूप में काम कर सकता है।
जावा में मॉनिटर कैसे काम करता है, इसकी विस्तृत व्याख्या के लिए, मैं जावा में समवर्ती प्रोग्रामिंग के मॉनिटर मैकेनिक्स अनुभाग को पढ़ने की सलाह देता हूं (पूर्ववर्ती लिंक Google पुस्तकों में पूर्वावलोकन प्रदर्शित करता है, और यह अनुभाग पढ़ने के लिए उपलब्ध है)।
Wakes up all threads that are waiting on this object's monitor.
अनौपचारिक () के बारे में कहते हैं , तो मुझे जो वस्तु मिलती है, वह अनुरक्षण है (आंतरिक इकाई / वस्तु की मदद से) जो सभी सूत्र लॉक का इंतजार कर रहे हैं, उस आंतरिक इकाई / वस्तु को मॉनिटर कहा जाता है?
जावा भाषा और रनटाइम सिस्टम मॉनिटर के उपयोग के माध्यम से थ्रेड सिंक्रोनाइज़ेशन का समर्थन करता है।
एक मॉनिटर एक विशिष्ट डेटा आइटम (एक स्थिति चर) के साथ जुड़ा हुआ है और उस डेटा पर लॉक के रूप में कार्य करता है। जब कोई थ्रेड किसी डेटा आइटम के लिए मॉनिटर रखता है, तो अन्य थ्रेड्स लॉक हो जाते हैं और डेटा का निरीक्षण या संशोधन नहीं कर सकते हैं।
http://java.sun.com/docs/books/jvms/second_edition/html/Concepts.doc.html#33308
एक समय में एक वस्तुओं तक पहुंच को नियंत्रित करने के लिए एक तंत्र
मॉनिटर एक सिंक्रनाइज़ेशन निर्माण है जो थ्रेड्स को पारस्परिक बहिष्करण और प्रतीक्षा करने की क्षमता (ब्लॉक) दोनों को एक निश्चित स्थिति के लिए सच होने की अनुमति देता है।
मॉनिटर के पास अन्य थ्रेड्स को संकेत देने के लिए एक तंत्र भी है जो उनकी स्थिति से मिले हैं। यह एक इकाई है जिसमें एक ताला और एक प्रतीक्षा सेट दोनों होते हैं। जावा में, कोई भी वस्तु मॉनिटर के रूप में काम कर सकती है।
जावा वर्चुअल मशीन में, हर ऑब्जेक्ट और क्लास तार्किक रूप से एक मॉनिटर से जुड़ा होता है। मॉनिटर की पारस्परिक बहिष्करण क्षमता को लागू करने के लिए, प्रत्येक वस्तु और वर्ग के साथ एक ताला (जिसे म्यूटेक्स कहा जाता है) जुड़ा हुआ है। इसे ऑपरेटिंग सिस्टम की शर्तों में एक सेमाफोर कहा जाता है, म्यूटेक्स एक बाइनरी सेमाफोर है।
http://journals.ecs.soton.ac.uk/java/tutorial/java/threads/monitors.html
मॉनिटर ऑब्जेक्ट या डेटा सदस्य के साथ संबद्ध होता है, जो डेटा सदस्य या ऑब्जेक्ट दर्ज करने पर अधिग्रहित होता है सिंक्रनाइज़ेशन ब्लॉक (महत्वपूर्ण अनुभाग) और बाहर निकलने पर जारी होता है।