-1

スレッドが Waited になる前にいくつかの操作を実行することは可能ですかwait()?

これは、クライアント、トランザクション マネージャー、およびロック マネージャーを備えた分散システムであり、最後の 2 つはミドルウェア サーバー上にあります。ロック マネージャーは、トランザクション マネージャーのスレッドである可能性があります。このスレッドは、待機する前にクライアント スレッドにwait()できるようにしたいと考えています。wait()

4

1 に答える 1

2

別のスレッドを「待つ」ことはできません。オブジェクトを呼び出した場合、(またはによって) 通知されるか、いわゆるスプリアス ウェイクアップが原因でwait()、現在のスレッドをスリープ状態にするだけです。Java チュートリアルの「レッスン: 並行性」を読むことをお勧めします。特に、保護されたブロックに関する部分は興味深いはずです。notify()notifyAll()

したがって、たとえば次のように、オブジェクトの待機を開始しようとしていることを他のスレッドに伝えたい場合

// We are somewhere, in some method ...
synchronized(someObj) {
    someObj.wait();
}

他のオブジェクトを登録できる、ある種のオブザーバー パターンを実装する必要があります。

于 2012-11-09T23:40:07.823 に答える