2012-04-20 6 views
0

isWaiting()メソッドはありません。どのスレッドが特定のオブジェクトのwait()をブロックしているかどうかをテストすることは可能ですか? Threadオブジェクトが与えられた場合、Threadがwait()しているオブジェクトがあればそれを見つけることは可能ですか?別のスレッドがwait()ingかどうかを調べるには?

答えて

6

待ち状態の場合は、thread.getState() == Thread.State.WAITING || thread.getState() == TIMED_WAITINGを試してください。

スレッドが待っているオブジェクトについては、わかりませんが、スレッドがネイティブコードなしでオブジェクトを取得できるかどうかは疑問です。もう一方のラウンド、つまり特定のオブジェクトにロックを保持するスレッドを取得することも、純粋なJavaでは不可能と思われます(ここでは、Programmatically determine which Java thread holds a lock参照)。

0

基本的な並行方法では、あなたのニーズを満たすことができない場合があります。 java.util.concurrentパッケージを試してみてください。問題を解決できるクラスの例は、ReentrantLockです。スレッド上の完全なtutorialがここにあります。

+0

このロックにはgetOwner()メソッドが含まれているので、あなたはちょっと質問に答えていると思います。 – Qwertie

関連する問題