इस साइट में स्पष्ट रूप से ReentrantLock के बीच अंतर का उल्लेख किया और जावा में कीवर्ड सिंक्रनाइज़। मैं बस वहां से कॉपी और पेस्ट करता हूं।
http://javarevisited.blogspot.in/2013/03/reentrantlock-example-in-java-synchronized-difference-vs-lock.html
1) ReentrantLock और सिंक्रनाइज़ कीवर्ड के बीच एक और महत्वपूर्ण अंतर निष्पक्षता है। सिंक्रनाइज़ कीवर्ड निष्पक्षता का समर्थन नहीं करता। किसी भी थ्रेड को रिलीज़ होने के बाद लॉक प्राप्त हो सकता है, दूसरी तरफ, कोई वरीयता निर्दिष्ट नहीं की जा सकती है, दूसरी तरफ आप रेंटेंट्रॉक लॉक के उदाहरण बनाते समय निष्पक्षता संपत्ति निर्दिष्ट करके ReentrantLock मेला कर सकते हैं। निष्पक्षता की स्थिति में निष्पक्षता संपत्ति लंबे समय तक प्रतीक्षा धागे को लॉक प्रदान करती है।
2) सिंक्रनाइज़ और पुनर्वित्त लॉक के बीच दूसरा अंतर tryLock() विधि है। ReentrantLock सुविधाजनक tryLock() विधि है, जो केवल अगर इसकी उपलब्ध है या नहीं किसी अन्य धागा द्वारा आयोजित ताला प्राप्त कर लेता है प्रदान करता है। इससे जावा एप्लिकेशन में लॉक के लिए प्रतीक्षा थ्रेड को अवरुद्ध करना कम हो जाता है।
3) जावा में ReentrantLock और सिंक्रनाइज़ किए गए कीवर्ड के बीच एक और मूल्यवान अंतर अंतर है, लॉक की प्रतीक्षा करते समय थ्रेड को बाधित करने की क्षमता है। सिंक्रनाइज़ किए गए कीवर्ड के मामले में, एक थ्रेड को लॉक के लिए इंतजार कर अवरुद्ध किया जा सकता है, अनिश्चित अवधि के लिए और उस पर नियंत्रण करने का कोई तरीका नहीं था। ReentrantLock एक विधि lockInterruptibly() कहा जाता है, जो जब यह ताला के लिए इंतज़ार कर रहा है धागा बाधित करने के लिए इस्तेमाल किया जा सकता प्रदान करता है। इसी प्रकार टाइमआउट के साथ tryLock() को समय-समय पर उपयोग किया जा सकता है यदि कुछ समय अवधि में लॉक उपलब्ध नहीं है।
4) पुनर्विक्रेता लॉक लॉक के लिए प्रतीक्षा किए गए सभी थ्रेडों की सूची प्राप्त करने के लिए सुविधाजनक तरीका भी प्रदान करता है।
स्रोत
2017-04-02 06:02:15
केवल यदि आप एक सुलभ विधि के लिए 'synchronized' संशोधक लागू होते हैं, नहीं करता है, तो आप एक दुर्गम ताला वस्तु पर एक' synchronized' ब्लॉक का उपयोग करें "किसी भी ग्राहक को प्रभावी ढंग से अपने वस्तु की समन्वयन ताला के लिए सीधी पहुँच है।" – Raedwald
हाँ। कि मैं क्या कहा। यदि आप अपने तरीकों पर डिफ़ॉल्ट सिंक्रनाइज़ किए गए कीवर्ड का उपयोग करते हैं, तो आप प्रभावी रूप से अपने ताले प्रकाशित कर रहे हैं। इसके चारों ओर जाने के लिए, सिंक्रनाइज़ ब्लॉक आंतरिक बनाओ। –