2016-10-31 11 views
1

アプリケーションでは、sun.misc.Unsafe.parkメソッドの呼び出しによってスレッドがロックされていることがわかりました。このパターンは通常、データベースへのJDBC呼び出しによってトリガーされることがわかりました。sun.misc.Unsafe.parkがJDBC呼び出しによってトリガーされました

Unsafe.parkメソッドについてよくわかりません。私はこれがスレッドがDBからの入力を待っていることを示す通常の動作であるかどうか、または私たちが改善できるアプリケーションとのいくつかの同期問題があるかどうか疑問に思っています。

2つのうちのどれがわかりますか?あるいは、問題をさらに調査する方法を知っていますか?

+0

これは、アイドル状態のスレッドを示します。むしろ通常の動作 – Antoniossss

+0

ですが、I/Oを待っているアイドルスレッド、またはアイドル状態のスレッドが互いに同期しようとしていますか? – ichfarbstift

+0

スタックトレースをチェックするとわかるでしょう – Antoniossss

答えて

2

sun.misc.Unsafe.parkはかなりthread.waitと同じであるが、それはparkがネイティブ呼び出しがあると、それはパフォーマンスの利点を得ることができるため、事実のために、アーキテクチャ依存のコードを使用しています(これは例えば、java.util.concurrentで人気のパターン、あなたがすることができますおよびthread pooloingparkの使用法を参照してください。明らかに、マルチスレッド環境を持ち、db connectionsthread poolを独自の目的で使用することは明らかです。 jdk parkingでは重要な最適化が行われます。

JDBCを使用している状況について、私はあなたのケースでデッドロックが発生していることを示唆しています。すべてのスレッドが何らかのイベントを待っています。あなたは、私がこの記事を読むために、あなたにアドバイスしたいと思い、deadlockを調査することができます。

jdbc-deadlock-avoidance

jdbc and deadlocks manual

HTH

+0

「jdbs」とは何ですか? – EJP

+0

私はタイプミスをしました –

+0

JDBCは略語でJavaコードではなく、小文字ではありません。 – EJP

関連する問題