आप यहां जावा लॉक के साथ डेटाबेस लॉक को भ्रमित कर रहे हैं। जेएमसी आपको केवल आपके जावा प्रोग्राम (सिंक्रनाइज़ किए गए ब्लॉक, प्रतीक्षा इत्यादि) के अंदर ताले दिखाता है, यह आपके डीबी के अंदर क्या हो रहा है इसके बारे में कुछ भी नहीं जानता है। आपकी एसक्यूएल-क्वेरी केवल डीबी स्तर (टेबल लॉक, रो लॉक इत्यादि) पर ताले दिखाती है और आपके जावा प्रोग्राम के अंदर ताले के बारे में कुछ नहीं जानती है। वे बिल्कुल अलग क्षेत्र हैं और बिल्कुल अलग ताले हैं।
आपके पास यहां एक थ्रेड का डंप है जो T4CConnection
प्रकार के ऑब्जेक्ट पर लॉक रखता है पते के साथ 0x7af3423c0
. इसका मतलब केवल यह है कि यह थ्रेड कुछ synchronized(connection)
के अंदर एक कोड निष्पादित करने की प्रक्रिया में है खंड मैथा। बस इतना ही। धागा अन्य धागे द्वारा अवरुद्ध नहीं है (अन्यथा इसकी स्थिति RUNNABLE
नहीं होगी , यह WAITING
होगा या BLOCKED
) यह चल रहा है और नेटवर्क सॉकेट से कुछ पढ़ रहा है (शायद, डीबी से प्रतिक्रिया)।
ऐसा व्यवहार बिल्कुल सामान्य है। DB ड्राइवर कनेक्शन इंस्टेंस पर सिंक्रोनाइज़ेशन करता है, जबकि यह SQL-क्वेरी को निष्पादित करने की प्रक्रिया में होता है ताकि अन्य थ्रेड्स को समानांतर में इसका उपयोग करने की अनुमति न मिले।
इस स्क्रीनशॉट और इस थ्रेड डंप में आपको चिंता करने की कोई बात नहीं है।