• 締切済み

「複数の」生産者消費者問題 in Java

基本的に生産者消費者問題なんですが Aが物を作るとBに渡し、Bが物を作るとCに渡し、Cが物を作るとDに渡す、というように 複数の生産者/消費者のベルトコンベヤーでの流れ作業を想定しています。 で以下のように組んでみたんですが、 B自身が「消費した/してない」をB自身に知らせていないので Bは勝手に作り始めてしまいます。 public class Main { public static void main(String args[]) { ConveyerBelt stationAB = new ConveyerBelt(); ConveyerBelt stationBC = new ConveyerBelt(); ConveyerBelt stationCD = new ConveyerBelt(); Worker producerA = new Worker(stationAB); Widget consumerB = new Widget(stationAB); Worker producerB = new Worker(stationBC); Widget consumerC = new Widget(stationBC); Worker producerC = new Worker(stationCD); Widget consumerD = new Widget(stationCD); producerA.start(); consumerB.start(); producerB.start(); consumerC.start(); producerC.start(); consumerD.start(); } } ConveyerBelt()バッファーがABとBCとCDの三つというのは正しいと思うんですけど スレッドはAとBとCとDの四つだけ作ればいいんでしょうか? でもその場合はConveyerBelt class自体はどんな風にいじればいいのでしょうか? ちなみにConveyerBelt()バッファーを一つにすればみんな同期しますが 当然ながら流れ作業になりません。 分からないところがあれば補足しますので、どなたかご教授下さい。 どうかお願いします。m(__)m

みんなの回答

  • ngsvx
  • ベストアンサー率49% (157/315)
回答No.2

「Aが物を作るとBに渡し」と「Bが物を作るとCに渡し」のBというのはどうのような関係にあるのでしょうか? 同一人物だと思うのですが、そのことが定義されていません。 そこに問題があるのではないかと思います。

kicker
質問者

お礼

その定義の方法を尋ねたのですが…。 もうとっくに自己解決してしまいました。 ありがとうございました。

  • Bonjin
  • ベストアンサー率43% (418/971)
回答No.1

とりあえず参照URLの本を読んで内容を理解すれば解決できるでしょう。

参考URL:
http://www.amazon.co.jp/exec/obidos/ASIN/4797319127/qid=1139623843/sr=1-2/ref=sr_1_10_2/503-5912056-1554313

関連するQ&A