システムでデッドロックが発生しました。数分間隔で取得した 2 つの jstack からの抜粋を次に示します。
Jスタック1
Found one Java-level deadlock:
=============================
"com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#2":
waiting to lock monitor 0x00007f1ad075d2e8 (object 0x00007f1aed690ff8, a com.mysql.jdbc.JDBC4ResultSet),
which is held by "com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#1"
"com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#1":
waiting to lock monitor 0x00007f1ad075d390 (object 0x00007f1aed4ca6c8, a com.mysql.jdbc.JDBC4Connection),
which is held by "com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#2"
Jスタック2
Found one Java-level deadlock:
=============================
"com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#2":
waiting to lock monitor 0x00007f1ad075d2e8 (object 0x00007f1aec62c8a8, a com.mysql.jdbc.JDBC4ResultSet),
which is held by "com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#1"
"com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#1":
waiting to lock monitor 0x00007f1ad075d390 (object 0x00007f1aec6077b8, a com.mysql.jdbc.JDBC4Connection),
which is held by "com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#2"
両方の jstack で、モニター ID は同じ 0x00007f1ad075d2e8と0x00007f1ad075d390ですが、オブジェクト ID は異なります。
明らかにデッドロックがあります。オブジェクト ID が異なるのはなぜですか? それらは同じであるべきではありませんか?