U verwart hier databasevergrendelingen met Java-vergrendelingen. JMC toont u alleen de sloten in uw Java-programma (gesynchroniseerde blokken, wachttijden enz.), het weet niets over wat er in uw DB gebeurt. Uw SQL-query toont alleen de vergrendelingen op DB-niveau (tabelvergrendelingen, rijvergrendelingen enz.) en weet niets over de vergrendelingen in uw Java-programma. Dat zijn absoluut verschillende gebieden en absoluut verschillende sloten.
Wat je hier hebt is een dump van een thread die een slot bevat op het object van het type T4CConnection
met het adres 0x7af3423c0
. Het betekent alleen dat deze thread bezig is met het uitvoeren van een code binnen een synchronized(connection)
blok. Dat is alles. De thread wordt niet geblokkeerd door andere threads (anders zou de status niet RUNNABLE
zijn , zou het WAITING
. zijn of BLOCKED
). Het draait en leest iets uit een netwerkaansluiting (waarschijnlijk het antwoord van de database).
Dergelijk gedrag is absoluut normaal. Het DB-stuurprogramma synchroniseert op de verbindingsinstantie terwijl het bezig is met het uitvoeren van een SQL-query om te voorkomen dat andere threads het parallel gebruiken.
Er is niets om je zorgen over te maken op deze screenshot en in deze threaddump.