1

よろしければ質問です。

メインスレッドが 3 つのスレッドを作成するとします。これら 3 つのスレッドは、特定のオブジェクトで wait() を呼び出します。次に、メイン スレッドは同じオブジェクトに対して notifyAll() を呼び出します。

スレッド1とスレッド3が単に通知を無視して待機状態に戻る間に、スレッド2とスレッド2のみが続行することを確認するにはどうすればよいですか?

本質的に、選択したスレッドに通知を送信するにはどうすればよいですか?

私が間違っていなければ、Java 5 でこれを行うのは非常に簡単です。別の条件を作成し、スレッド 2 が待機している条件のみをメイン スレッドで満たすようにします。

しかし、pre5 ではどのように解決すればよいでしょうか?

乾杯、ヴィック

4

1 に答える 1

1

.がなくても、スレッドが自発的にウェイクする可能性があることに注意してくださいnotify。そのため、常に何らかの条件が必要です。コードの一般的な形式は次のとおりです。

synchronized (lockObj) {
    while (!condition) {
        lockObj.wait();
    }
}

特定の操作を実行しているスレッドのみをウェイクするパフォーマンス上の理由がある場合があります。そのためには を調べますがjava.util.concurrent.locks、これはパフォーマンスの問題であり、正しいことを行う問題ではないことに注意してください。

于 2009-07-23T03:35:55.673 に答える