जब दो धागे एक ही ऑब्जेक्ट के लॉक को हासिल करने का प्रयास करते हैं तो उन चीजों को क्या तय किया जाता है, जिन पर यह तय किया जाता है कि लॉक को किस धागे पर रखा जाना चाहिए।क्या निर्धारित करता है कि दो प्रतिस्पर्धी धागे लॉक प्राप्त करते हैं?
उत्तर
Java documentation for notify() के अनुसार:
किसी एकल थ्रेड कि इस वस्तु के मॉनीटर पर इंतज़ार कर रहा है जाग। यदि इस ऑब्जेक्ट पर कोई भी थ्रेड प्रतीक्षा कर रहा है, तो उनमें से एक को जागृत करने के लिए चुना गया है। पसंद मनमानी है और कार्यान्वयन के विवेकाधिकार पर होता है। एक थ्रेड प्रतीक्षा विधियों के पर कॉल करके किसी ऑब्जेक्ट की मॉनिटर पर प्रतीक्षा करता है।
तो अगर आप का उपयोग synchronized(obj){}
आप मूल रूप से कोई नियंत्रण नहीं है जिस पर धागा obj
पर ताला प्राप्त करेंगे है, और आप किसी भी धारणा नहीं कर सकता। यह शेड्यूलर पर निर्भर करता है।
यदि आप निष्पक्षता चाहते हैं (यानी, ताला प्राप्त करने वाला अगला धागा कतार में पहला है), तो ReentrantLock पर एक नज़र डालें: इसमें एक बुलियन ध्वज है जो निर्दिष्ट करने के लिए कि आप निष्पक्षता को लागू करना चाहते हैं।
Java Oracle Docs के अनुसार:
इस वर्ग के लिए निर्माता एक वैकल्पिक निष्पक्षता पैरामीटर स्वीकार करता है। जब सत्य सेट किया जाता है, विवाद के तहत, ताले सबसे लंबे समय तक प्रतीक्षा धागे तक पहुंच प्रदान करने का पक्ष लेते हैं। अन्यथा यह ताला किसी भी विशेष पहुंच आदेश की गारंटी नहीं देता है।
यदि आप निष्पक्षता की अनुमति दे रहे हैं तो फीफो (प्रथम-प्रथम-प्रथम) का उपयोग किया जाता है, अन्यथा यह यादृच्छिक लगता है (मेरे अवलोकनों से)।
आप मानते हैं कि वह ReentrantLock का उपयोग करता है ... उसने केवल "एक ही ऑब्जेक्ट पर लॉक के लिए प्रतिस्पर्धा करने वाले धागे" कहा, जो कि कोई ऑब्जेक्ट IMHO –
- 1. आप कैसे निर्धारित करते हैं कि बाल धागे
- 2. क्या लॉक() {} संसाधन को लॉक करता है, या क्या यह कोड का एक टुकड़ा लॉक करता है?
- 3. निर्धारित करें कि क्या दो बाइनरी पेड़ बराबर हैं
- 4. ओ क्या करता है (लॉग (लॉग (एन))) - प्रतिस्पर्धी मतलब?
- 5. आप कैसे निर्धारित करते हैं कि दो हैशसेट बराबर हैं (मूल्य के अनुसार, संदर्भ द्वारा नहीं)?
- 6. एमएसएमक्यू प्रतिस्पर्धी उपभोक्ता
- 7. प्रोग्रामेटिक रूप से निर्धारित करता है कि कौन सा जावा थ्रेड लॉक रखता है
- 8. क्या स्कैला और एरलांग हरी धागे का उपयोग करते हैं?
- 9. निर्धारित करता है कि कॉलम मान स्ट्रिंग
- 10. क्या करता है ... = ... आर में करते हैं?
- 11. cmake क्या करता है .. करते हैं?
- 12. क्या cocos2d निर्धारित विधियां किसी अन्य धागे में चलती हैं?
- 13. कैसे UIAutomation निर्धारित करता है कि क्या एक UIAElement.isVisible()
- 14. '?' क्या करता है सी ++ में करते हैं?
- 15. || क्या करता है ऑपरेटर करते हैं?
- 16. थ्रेडिंग, दो धागे सी #
- 17. जांचें कि क्या दो वैक्टर बराबर हैं
- 18. क्या म्यूटेक्स रखने वाले धागे को निर्धारित करना संभव है?
- 19. 'म्यूटेक्स लॉक' वास्तव में क्या करता है?
- 20. धागे क्या हैं (एक धागा क्या है)?
- 21. एएसएम क्या करता है ("ठहराव") करते हैं और क्यों यह
- 22. एंड्रॉइड वास्तव में क्या करता है: layout_column क्या करते हैं?
- 23. जांचें कि क्या दो "चयन" बराबर हैं
- 24. एएसपी.नेट निर्धारित करता है कि पेज लोड इवेंट
- 25. पीएचपी जांचें कि क्या फाइल झुंड() से लॉक है?
- 26. आप एक अभिभावक धागे को कैसे सूचित करते हैं कि सभी बच्चे धागे समाप्त हो गए हैं?
- 27. रिकर्सिव प्रक्रिया का उपयोग करता है .nexttick अन्य प्रक्रियाओं या धागे काम करते हैं?
- 28. यह निर्धारित करता है कि एक यूनिकोड कैरेक्टर सी ++
- 29. धागे फीफो पर इंतजार कर रहे धागे हैं?
- 30. file_get_contents कुकीज़ प्राप्त करते हैं
धन्यवाद हो सकता है। साथ ही, ऐसा लगता है कि सिंक्रनाइज़ (ओबीजे) ब्लॉक प्रतीक्षा करता है() भी, क्या आप सिंक्रनाइज़ किए गए ब्लॉक या विधियों के पहले, उसके दौरान और बाद में किए गए कार्यों की श्रृंखला को रेखांकित कर सकते हैं – itsraja
आपका क्या मतलब है? एल्गोरिदम कोड के टुकड़े पर पारस्परिक बहिष्करण सुनिश्चित करने के लिए प्रयोग किया जाता है? या शेड्यूलिंग एल्गोरिदम? पूर्व के लिए, केवल अवधारणात्मक रूप से, आप पीटरसन के एल्गोरिदम पर एक नज़र रखना चाहेंगे: https://en.wikipedia.org/wiki/Peterson's_algorithm। बाद के लिए, इस पर चर्चा की गई है: http://stackoverflow.com/questions/2816011/what-is-the-jvm-scheduling-algorithm –
धन्यवाद। मेरा मतलब जावा के तरीकों के संदर्भ में पारस्परिक बहिष्कार था। प्रतीक्षा करें(), सूचित करें() ... मुझे 1 ऑब्जेक्ट की कोशिश कर रहे 2 धागे के लिए अनुरूपित इन फ़ंक्शन कॉल का अनुक्रम देखने में खुशी होगी। अरे यह 1 लड़की (या अधिक) लड़कों के समान है जो 1 लड़की का प्रस्ताव है। वे इसे wedlock कहते हैं;) – itsraja