概要
マルチスレッドプログラムの場合、プロデューサーと消費者モデルは非常に古典的なモデルです。より正確に言えば、「プロデューサー - 消費者 - ウェアハウスモデル」と呼ばれる必要があります。倉庫を離れた後、生産者と消費者は共有されたストレージスペースに欠けており、共同ではない問題はありません。
模範的な例
シーンを定義します。倉庫では、生産者が毎回製品を置くことができ、消費者は一度に製品を取り出すことができます。同時に、次の4つのポイントに注意を払う必要があります。
1.同時に生産する必要があるプロデューサーは1つだけです。
2。同時に使用できる消費者の消費量は1つだけです。
3.倉庫が空の場合、消費者は消費し続けることができません。消費者は、消費者の消費の前に現在の倉庫ステータスが空であるかどうかをリサイクルする必要があります。
4.倉庫がいっぱいになると、生産者の生産資金を生産し続けることはできません。実行する。
例コードは次のとおりです。
パブリッククラスの同意{String [] args){warehouse = new Warehouse(); ;新しいスレッド()。 {synchronized(this){while(index == store_size){try {this.wait();} catch(arturnedexception e){e.printstacktrace();}} ts [index ++] = crodce; ; system.out.println( " + product +"、現在倉庫:== 0){try {this.wait();} ){e.printstacktrace();}文字列= storeproduts [index-1]; ();リターン製品;}}クラスプロデューサーはrunnable {warehouse house; string dults.ware.pushproduct(製品); }}}