में सिंक्रनाइज़ेशन के क्रम को अत्यधिक समवर्ती प्रणालियों में, यह विश्वास करना मुश्किल हो सकता है कि ताले का उपयोग सही है। विशेष रूप से, डेडलॉक्स का परिणाम हो सकता है यदि ताले किसी ऑर्डर में अधिग्रहित किए जाते हैं जिसे किसी अन्य थ्रेड में उचित क्रम में हासिल किए जाने की अपेक्षा नहीं की जाती थी।जावा
उपकरण (उदा। कवरिटी) हैं जो कोड आधार पर स्थिर विश्लेषण कर सकते हैं और "असामान्य" लॉकिंग ऑर्डर की तलाश कर सकते हैं। मैं अपनी जरूरतों को पूरा करने के लिए अन्य विकल्पों का पता लगाना चाहता हूं।
क्या जावा कोड के उपकरण के लिए कोई हल्का वजन * उपकरण है जो अपेक्षाओं के अलावा किसी अन्य क्रम में लॉक प्राप्त किए जा रहे मामलों का पता लगा सकता है? टिप्पणियों/टिप्पणियों के माध्यम से लॉकिंग ऑर्डर को स्पष्ट रूप से कॉल करने के साथ मैं ठीक हूं।
निशुल्क और/या ओपन-सोर्स समाधान पसंदीदा। अगर इस समस्या के लिए गैर-उपकरण दृष्टिकोण हैं तो कृपया टिप्पणी भी करें।
* मेरी प्रयोजनों, हल्के वजन का मतलब के लिए ...
- यदि यह उपकरण है, मैं अभी भी अपने कार्यक्रम में एक ही बॉलपार्क प्रदर्शन के साथ चला सकते हैं। 30-50% गिरावट स्वीकार्य है, मुझे लगता है।
- मुझे उपकरण से बातचीत करने के आधे दिन खर्च करने की ज़रूरत नहीं है, बस इसे "ठीक" निकालने के लिए। आदर्श रूप में मुझे केवल यह ध्यान देना चाहिए कि कोई समस्या होने पर मैं इसका उपयोग कर रहा हूं।
- यदि यह उपकरण है, तो उत्पादन वातावरण के लिए इसे अक्षम करना आसान होना चाहिए।
- यह हर
synchronize
कथन पर मेरे कोड को अव्यवस्थित नहीं करना चाहिए। जैसा कि पहले उल्लेख किया गया है, मैं ऑब्जेक्ट्स या ऑब्जेक्ट्स के वर्गों को स्पष्ट रूप से टिप्पणी/एनोटेट करने के साथ ठीक हूं, जो रिश्तेदार आदेशों से बंद हो जाते हैं।
... यही कारण है कि अभिनेता मॉडल और एसटीएम अधिक से अधिक लोकप्रिय हो रहे हैं –
किसी के पास java.lang.hread.holdsLock (ऑब्जेक्ट) का संदर्भ देने का उत्तर था जिसे तत्काल हटा दिया गया था। मैं उस विधि को अपने आप नहीं ढूंढ पाया, पॉइंटर के लिए धन्यवाद। मेरा सवाल अभी भी खड़ा है, यद्यपि। –
क्या आपको ऐसा कुछ करने के लिए सभ्य कुछ मिला है? मेरे पास सी ++ में बहुत परिष्कृत डेडलॉक पहचान कोड है और मेरे मामले में मैं अपने जावा कोड को उन मामलों को पकड़ने के लिए करना चाहता हूं जहां सी ++ और/या जावा पक्ष पर ताले एक दूसरे के साथ हस्तक्षेप कर सकते हैं और परिणामस्वरूप डेडलॉक्स हो सकते हैं। – Pavel