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.