java多執行緒總結六 經典生產者消費者問題實現

2021-06-01 09:02:13 字數 1700 閱讀 9912

這是個執行緒同步的經典例子,源**如下:

view plain

"font-size:16px;"

>

package

demo.thread;  

/***經典生產者與消費者問題:生產者不斷的往倉庫中存放產品,消費者從倉庫中消費產品。

*其中生產者和消費者都可以有若干個。倉庫容量有限,庫滿時不能存放,庫空時不能取產品 

*/public

class

producersandconsumers   

}  /**

* 消費者

*/class

consumer 

implements

runnable   

@override

public

void

run()   

}  /**

* 生產者

*/class

producer 

implements

runnable   

@override

public

void

run()   

}  /**

* 產品類

*/class

product   

@override

public

string tostring()   

public

string getid()   

public

void

setid(string id)   

public

string getname()   

public

void

setname(string name)   

}  /**

*倉庫*/

class

storage  catch

(interruptedexception e)   

}  //把產品放入倉庫

products[top++] = product;  

system.out.println(thread.currentthread().getname() + " 生產了產品"

+ product);  

notifyall();//喚醒等待執行緒

}  // 消費者從倉庫中取出產品

public

synchronized

product pop()  catch

(interruptedexception e)   

}  //從倉庫中取產品

--top;  

product p = new

product(products[top].getid(), products[top].getname());  

products[top] = null

;  system.out.println(thread.currentthread().getname() + " 消費了產品"

+ p);  

notifyall();//喚醒等待執行緒

return

p;  

}  }  

執行結果:

生產者 生產了產品(產品id:090505105 產品名稱:**)

消費者 消費了產品(產品id:090505105 產品名稱:**)

java多執行緒總結六 經典生產者消費者問題實現

這是個執行緒同步的經典例子,源 如下 package demo.thread 經典生產者與消費者問題 生產者不斷的往倉庫中存放產品,消費者從倉庫中消費產品。其中生產者和消費者都可以有若干個。倉庫容量有限,庫滿時不能存放,庫空時不能取產品 public class producersandconsum...

java多執行緒總結六 經典生產者消費者問題實現

這是個執行緒同步的經典例子,源 如下 view plain copy to clipboard print?font size 16px packagedemo.thread 經典生產者與消費者問題 生產者不斷的往倉庫中存放產品,消費者從倉庫中消費產品。其中生產者和消費者都可以有若干個。倉庫容量有限...

java多執行緒經典例題 生產者 消費者問題

生產者 消費者問題 題目描述 生產者 productor 將產品交給店員 clerk 而消費者 customer 從店員處取走產品,店員一次只能持有固定數量的產品 比如 20 如果生產者試圖生產更多的產品,店員會叫生產者停一下,如果店中有空位放產品了再通知生產者繼續生產 如果店中沒有產品了,店員會告...