2013-07-08 7 views
6

जावा दस्तावेज़ जो मैं उपयोग कर रहा हूं, यह स्पष्ट करता है कि Object.wait() विधि संबंधित मॉनीटर को वापस लौटने से पहले पुनः प्राप्त करती है, भले ही इसे अधिसूचित किया गया हो या एक नकली जागरूकता हो; किसी भी सामान्य विधि रिटर्न की निगरानी मॉनीटर पुन: अधिग्रहण से की जाएगी।क्या ऑब्जेक्ट.वाइट() विधि मॉनीटर को पुनः प्राप्त करती है जब यह अपवाद फेंकता है?

हालांकि, यह Object.wait() घटना में क्या होगा, इसके बारे में थोड़ा कम स्पष्ट है, उदाहरण के लिए, Interrupted Exception। मैं यह कह रहा हूं कि अपवाद फेंकने से पहले यह वास्तव में लॉक को पुनः प्राप्त कर देता है। हालांकि, प्रलेखन इसके बारे में बहुत स्पष्ट नहीं है, इसलिए मैं नहीं कर रहा हूँ 100% यकीन है कि ...

यहाँ documentaiton मैं देख रहा हूँ है: http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html#wait%28%29

तो, मेरे अनुमान सही है, या क्या मेरे कॉलिंग कोड को मॉनिटर स्टेटस को संबोधित करने की आवश्यकता है (उदाहरण के लिए, यदि आवश्यक हो तो इसे पुनः प्राप्त करना) अपवाद के बाद फेंक दिया जाता है?

उत्तर

5

JLSObject#wait के जावाडोक से अधिक विस्तार से निर्दिष्ट करता है। उस पाठ के अनुसार, लॉक बिना शर्त रूप से पुनः प्राप्त किया जाना चाहिए। प्रासंगिक बिट का हवाला देते हुए:

  1. थ्रेड टी वस्तु मीटर की प्रतीक्षा सेट करने के लिए जोड़ा है, और करता है nमीटर पर कार्रवाई अनलॉक कर रहा है।

  2. थ्रेड टी किसी भी आगे के निर्देश जब तक यह मीटर के सेट इंतजार से हटा दिया गया निष्पादित नहीं करता है। धागा इंतजार सेट से निम्न क्रियाओं में से किसी एक की वजह से हटाया जा सकता है, और कुछ समय बाद फिर से शुरू होगा:

    • [...]

    • एक बाधा कार्रवाई टी पर प्रदर्शन किया जा रहा है ।

  3. थ्रेड टी प्रदर्शन nमीटर पर ताला कार्रवाई।

+0

अनुभवजन्य, यह सही प्रतीत होता है। यह भी उचित है। मुझे यकीन नहीं है कि इसे दस्तावेज़ीकरण से लिया जा सकता है, जो एक दस्तावेज बग का सुझाव देता है। –

+0

@ पेट्रीसियाहनहान मैंने जवाब को पूरी तरह से लिखा है: वास्तव में जेएलएस स्पष्ट रूप से स्पष्ट रूप से निर्दिष्ट करता है कि लॉक बिना शर्त रूप से पुनः प्राप्त किया जाएगा। –

+0

@ पेट्रीसियाहानहान धन्यवाद, यह इसे स्पष्ट रूप से समझाता है। जेएलएस लिंक के लिए भी धन्यवाद ... अगली बार मेरे पास ऐसा ही सवाल होगा कि एपीआई दस्तावेज़ों का पता नहीं है। :) –

संबंधित मुद्दे