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

[jfriends-ml 1694] Re: Rendezvous クラス



  高橋(智)です。

TAKEKAWA Tsutomu wrote:
> 
> こんばんは。武川です。
> 
> 前回の読書会でRendezvousクラスというクラスが出てきましたが、
> このクラスが3つ以上のスレッドでどのように値を交換するのか
> よくわからなかったので、サンプルプログラムを作って確認
> してみました。
> 
> new Randezvous(n);で初期化したとすると、
> 
> Randezvous.randezvousメソッドをn個のスレッドが呼ぶまで、
> 各スレッドはこのメソッド内でwaitしつづけます。

  誰か(いずれかのスレッド)が 一旦randezvous を呼ぶと、全員揃うまでwait
し続けるのですよね?

 
> #タイムアウトする場合もあるが、ここでは無視。
> 
> n個目のスレッドがRandezvous.randezvousを呼んだときに、
> 1番目のスレッドの値と自分の値を交換し、notifyallを呼びます。
> そして、以降他のスレッドが次々実行され、i(<=n)番目の
> スレッドが(i+1)%1番目のスレッドの値をもらいます。

  本には「利用の大部分には2つのスレッド間での.....交換云々」とあるし、
3以上のスレッドでの交換をどのような利用することが考えられるのでしょうか...。
考えても思い浮かばない。うぅぅ。

-- 
高橋智宏
  Java読書会( http://www.t3-jpn.com/bof/ )
  T3-Japan( http://www.t3-jpn.com/ )