ここでは、データベースロックとJavaロックを混同しています。 JMCは、Javaプログラム内のロック(同期されたブロック、待機など)のみを表示し、DB内で何が起こっているかについては何も知りません。 SQLクエリは、DBレベルのロック(テーブルロック、行ロックなど)のみを表示し、Javaプログラム内のロックについては何も知りません。それらは完全に異なる領域であり、完全に異なるロックです。
ここにあるのは、タイプT4CConnection
のオブジェクトのロックを保持するスレッドのダンプです。 アドレス0x7af3423c0
。これは、このスレッドがsynchronized(connection)
内でコードを実行していることを意味するだけです。 ブロック。それで全部です。スレッドは他のスレッドによってブロックされません(そうでない場合、その状態はRUNNABLE
になりません。 、WAITING
になります またはBLOCKED
)。ネットワークソケットから何かを実行して読み取っています(おそらく、DBからの応答)。
このような動作は完全に正常です。 DBドライバーは、SQLクエリの実行中に接続インスタンスで同期を実行し、他のスレッドがそれを並行して使用できないようにします。
このスクリーンショットとこのスレッドダンプでは、心配する必要はありません。