Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Objeto bloqueado encontrado em oracle.jdbc.driver.T4CConnection


Você está confundindo bloqueios de banco de dados com bloqueios Java aqui. O JMC mostra apenas os bloqueios dentro do seu programa Java (blocos sincronizados, esperas etc), ele não sabe nada sobre o que está acontecendo dentro do seu banco de dados. Sua consulta SQL mostra apenas os bloqueios no nível do banco de dados (bloqueios de tabela, bloqueios de linha etc.) e não sabe nada sobre os bloqueios dentro do seu programa Java. Essas são áreas absolutamente diferentes e fechaduras absolutamente diferentes.

O que você tem aqui é um dump de um thread que mantém um bloqueio no objeto do tipo T4CConnection com o endereço 0x7af3423c0 . Significa apenas que esta thread está em processo de execução de um código dentro de algum synchronized(connection) quadra. Isso é tudo. O encadeamento não está bloqueado por outros encadeamentos (caso contrário, seu estado não seria RUNNABLE , seria WAITING ou BLOCKED ). Ele está executando e lendo algo de um soquete de rede (provavelmente, a resposta do banco de dados).

Tal comportamento é absolutamente normal. O driver de banco de dados faz a sincronização na instância de conexão enquanto está no processo de execução de uma consulta SQL para não permitir que outros threads a usem em paralelo.

Não há nada com que você deva se preocupar nesta captura de tela e neste despejo de thread.