1

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

4

2 に答える 2

8

さて、待機状態については試してみてくださいthread.getState() == Thread.State.WAITING || thread.getState() == TIMED_WAITING

スレッドが待機しているオブジェクトについてはわかりませんが、ネイティブコードなしでスレッドが待機しているオブジェクトを取得できるとは思えません。逆に、つまり、特定のオブジェクトのロックを保持するスレッドを取得することも、純粋なJavaでは不可能のようです(ここを参照:プログラムでどのJavaスレッドがロックを保持するかを決定します)。

于 2012-04-20T16:44:30.333 に答える
0

基本的な並行メソッドでは、ニーズが満たされない場合があります。java.util.concurrent パッケージを試してみてください。問題を解決できるサンプル クラスの 1 つはReentrantLockです。スレッドに関する完全なチュートリアルは次のとおりです。

于 2012-04-20T17:10:39.250 に答える