[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[jfriends:00495] wait, notify 議論の行方





吉田です。

Java-houseなどで、waitがあっても、

while(booleanStateFull)
    wait(1000)

と、

while(booleanStateEmpty)
    wait(1000)

の二つのステートで、どちらも同じオブジェクトに対して synchronized しな
ければならない仕様があるのは、少しもったいないという話題があったと思います。

質問なのですが、そういった処理を前提として、以下のJavaプログラムの場合
には、どのように、処理を記述するのでしょうか?

while(!hardSignel) {
    while(!weakSignal && (lowerLimit < x || upperLimit < x))
        wait(1000)
}
while(!weakSignal) { //さらに、これを追加してみます。
    //後始末
    //例)スレッドの終了を待つが、物理スレッドを再利用したい
    //例)AsyncWriterのフラッシュ処理
}

僕の想像だと、以下のメソッド経由でしかつかえない事になり、Javaよりも
複雑になる気がします。

class WaitableState {
    public void waitForMe();
    public void changeEvent();
    //WindowsAPIは以下のものがあります。
    public static void waitForMulti(WaitableState[]);
}

-- 
S.Yoshida <vzy03312@xxxxxxxxxxxxxxxxx>

------------------------------------------------------------------------
         ★ こっちの流行語大賞はどんなの?          
  http://www.infoseek.co.jp/Keyword?pg=nranking_top_if.html&svx=971122