生產者生產產品後將產品放在乙個倉庫裡,消費者購買省商品相當於從倉庫裡拿出商品。這其中涉及到的有生產者、消費者與倉庫以及產品四個物件,因此需要建立四個類來表示。最後還需要乙個測試類。對於生成與消費這兩個動作可是是同時執行的(只要有商品的話),因此需要使用到多執行緒的知識。
product類
public
class product
public
intgetid()
public
void
setid(int id)
}
storage類
public
class
storage catch (interruptedexception e)
}this.notifyall();//喚醒該執行緒
ps[index] = p;
index++;
}//取出產品的方法
public
synchronized product pop() catch (interruptedexception e)
}this.notifyall();
index--;
return ps[index];
}}
producer類
public
class
producer
extends
thread
//因為繼承了thread類,所以需要重寫run方法
@override
public
void
run()catch(interruptedexception e)
}}
customer類
public
class
customer
extends
thread
@override
public
void
run() catch (interruptedexception e) }}
}
testmain類
public
class test
}
多執行緒之生產者與消費者問題
考慮這樣乙個飯店,他有乙個廚師和乙個服務生,然後服務生必須等待廚師準備好食物,當廚師準備好食物時,他會通知服務生,然後服務生上菜,然後返回繼續等待。食物 class meal public string tostring 服務生 class waitperson implements runnabl...
多執行緒之生產者消費者問題
生產者 producer 消費者consumer 籃子 basket stack 以棧結構代替的籃子,丟進去的饅頭滿足先進後出 問題描述 生產者生產10個饅頭丟進容量只有6的籃子裡面,消費者不斷吃掉籃子中的饅頭。package consumer producer public class consu...
多執行緒之消費者生產者問題
未經過處理的 如下 這裡有兩個問題 首先是對於info物件,生產者可能只新增了webname的資訊,而沒有來得及新增link資訊,程式就切換到了消費者執行緒,消費者執行緒將webname和上乙個info物件的link聯絡到一起。生產者存放了若干次的資料,消費者才開始讀取資料,或者是消費者取完乙個資料...