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

[jfriends:00478] Re: R e: Thread の一時停止と再開について





信乃です。
右も左もわからないような私に、丁寧にレスをつけてくださって、
たいへん感謝しております。

大崎様>>

>  run()メソッドは、スレッドthで実行され、mousePressed()メソッドはGUIスレッド
>  で実行されます。

だとすると、run()メソッド内のsynchronized(object)ブロックを
synchronized(this){
 while (flag)
  wait();
}
とし、mousePressed()メソッド内のsynchronized()ブロックを
synchronized(th){
  if(flag){
    msg="2";				
    flag=!flag;			
    th.notify();		
    showStatus(msg);
  }
  else{
    msg="1";				
    showStatus(msg);
    flag=!flag;			
  }
}
とすれば通常に処理できるということでしょうか?

ちなみに、私のPCでこれを実行すると、wait()するものの、再開はしません。
(ステータス行に2は出力されるので、どれかのスレッドにnotify()を発信しているのは
確かだと思うのですが・・・


>  問題なのはそれぞれのスレッドが別々のモニタを使って同期しようとしていたこと
>  です。

モニタというのは、常にひとつではないのですか?
どうも、モニタの概念がよく理解できないのですが・・・


************************************
Shino Inuzuka
Mail:Titta2@xxxxxxxxxxxx
************************************





_______________________________________________________



------------------------------------------------------------------------
目指せ!! 商品券20万,旅行券20万,デジカメ,PS2,Xbox…ホームページコンテスト
             http://isweb.infoseek.co.jp/hp_daiou/?svx=971122