प्रयास इस चैनल की फ़ाइल के दिए गए क्षेत्र पर एक ताला प्राप्त करने के लिए।
यह विधि अवरुद्ध नहीं है। एक आमंत्रण हमेशा तत्काल लौटाता है, या तो अनुरोधित क्षेत्र पर लॉक प्राप्त कर रहा है या ऐसा करने में विफल रहा है। यदि यह लॉक प्राप्त करने में विफल रहता है क्योंकि द्वारा एक ओवरलैपिंग लॉक आयोजित किया जाता है तो यह शून्य हो जाता है। यदि यह किसी भी अन्य कारण के लिए लॉक प्राप्त करने में विफल रहता है तो उपयुक्त अपवाद फेंक दिया जाता है।
स्थिति और आकार पैरामीटर द्वारा निर्दिष्ट क्षेत्र को वास्तविक अंतर्निहित फ़ाइल के भीतर निहित या ओवरलैप करने की आवश्यकता नहीं है। लॉक क्षेत्रों को आकार में तय किया गया है; यदि लॉक क्षेत्र में प्रारंभ में फ़ाइल का अंत होता है और फ़ाइल क्षेत्र से आगे बढ़ती है तो फ़ाइल का नया भाग लॉक द्वारा कवर नहीं किया जाएगा। एक फ़ाइल आकार में बढ़ने की आशा है और पूरी फ़ाइल पर एक ताला फिर एक क्षेत्र शून्य से शुरू, और फ़ाइल की उम्मीद अधिकतम आकार से अधिक नहीं छोटे आवश्यक है, बंद कर दिया जाना चाहिए। शून्य-तर्क tryLock()
विधि आकार Long.MAX_VALUE
आकार के क्षेत्र को लॉक करता है।
कुछ ऑपरेटिंग सिस्टम साझा ताले, जो मामले में एक साझा ताला के लिए एक अनुरोध स्वचालित रूप से एक विशेष लॉक के लिए एक अनुरोध में बदल जाता है का समर्थन नहीं करते। चाहे नव-अधिग्रहण लॉक साझा किया गया है या विशेष रूप से का आविष्कार करके परीक्षण किया जा सकता है जिसके परिणामस्वरूप लॉक ऑब्जेक्ट का विधि साझा किया गया है।
फ़ाइल लॉक पूरे जावा वर्चुअल मशीन की ओर से आयोजित किए जाते हैं। वे को उसी वर्चुअल मशीन के भीतर एकाधिक थ्रेड द्वारा फ़ाइल तक पहुंच के लिए उपयुक्त नहीं हैं।
पैरामीटर्स: स्थिति - जिस स्थिति पर लॉक किया गया क्षेत्र शुरू करना है; गैर-ऋणात्मक आकार होना चाहिए - लॉक क्षेत्र का आकार; गैर नकारात्मक होना चाहिए, और योग स्थिति + आकार गैर नकारात्मक साझा किया जाना चाहिए - एक अनन्य ताला रिटर्न अनुरोध करने के लिए, एक साझा ताला अनुरोध करने के लिए सही गलत: एक लॉक वस्तु नव हासिल कर ली ताला का प्रतिनिधित्व करने, या नल ताला हासिल नहीं किया जा सकता है अगर क्योंकि अन्य प्रोग्राम एक अतिव्यापी ताला फेंकता रखती है: IllegalArgumentException
- मानकों के आधार पर पूर्व शर्त करते ClosedChannelException
पकड़ नहीं है - इस चैनल OverlappingFileLockException
बंद है, तो - एक ताला है कि अगर अनुरोधितओवरलैप करता हैक्षेत्र पहले से ही इस जावा आभासी मशीन द्वारा आयोजित किया जाता है, या अगर एक और धागा पहले से ही इस पद्धति में अवरुद्ध है और एक ही फाइल IOException
के अतिव्यापी क्षेत्र लॉक करने के लिए प्रयास कर रहा है - कुछ अन्य आई/ओ त्रुटि आ जाती है देखें इसके अलावा: lock()
, lock(long,long,boolean)
, tryLock()
thx मैं कोशिश करूंगा – neo