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