Pleteš si tady zámky databáze se zámky Java. JMC vám pouze ukazuje zámky uvnitř vašeho programu Java (synchronizované bloky, čekání atd.), neví nic o tom, co se děje uvnitř vaší DB. Váš dotaz SQL zobrazuje pouze zámky na úrovni DB (zámky tabulek, zámky řádků atd.) a neví nic o zámcích uvnitř vašeho programu Java. To jsou naprosto odlišné oblasti a naprosto odlišné zámky.
To, co zde máte, je výpis vlákna, které drží zámek na objektu typu T4CConnection
s adresou 0x7af3423c0
. Znamená to pouze, že toto vlákno je v procesu provádění kódu uvnitř nějakého synchronized(connection)
blok. To je vše. Vlákno není blokováno jinými vlákny (jinak by jeho stav nebyl RUNNABLE
, bylo by to WAITING
nebo BLOCKED
). Běží a čte něco ze síťového soketu (pravděpodobně odpověď z DB).
Takové chování je naprosto normální. Ovladač DB provádí synchronizaci na instanci připojení, zatímco je v procesu provádění dotazu SQL, aby jiným vláknům nedovolil používat jej paralelně.
Na tomto snímku obrazovky a v tomto výpisu vlákna se nemusíte ničeho obávat.