這是個執行緒同步的經典例子,源**如下:
view plain
copy to clipboard
print?
"font-size:16px;"
>packagedemo.thread;
/**
*經典生產者與消費者問題:生產者不斷的往倉庫中存放產品,消費者從倉庫中消費產品。
*其中生產者和消費者都可以有若干個。倉庫容量有限,庫滿時不能存放,庫空時不能取產品 */
public
classproducersandconsumers
} /**
* 消費者 */
classconsumerimplementsrunnable
@override
public
voidrun()
} /**
* 生產者 */
classproducerimplementsrunnable
@override
public
voidrun()
} /**
* 產品類 */
classproduct
@override
publicstring tostring()
publicstring getid()
public
voidsetid(string id)
publicstring getname()
public
voidsetname(string name)
} /**
*倉庫 */
classstoragecatch(interruptedexception e)
} //把產品放入倉庫
products[top++] = product;
system.out.println(thread.currentthread().getname() + " 生產了產品"
+ product);
notifyall();//喚醒等待執行緒
} // 消費者從倉庫中取出產品
public
synchronizedproduct pop()catch(interruptedexception e)
} //從倉庫中取產品
--top;
product p =newproduct(products[top].getid(), products[top].getname());
products[top] =null;
system.out.println(thread.currentthread().getname() + " 消費了產品"
+ p);
notifyall();//喚醒等待執行緒
returnp;
} }
執行結果:
生產者 生產了產品(產品id:010435111 產品名稱:**)
消費者 消費了產品(產品id:010435111 產品名稱:**)
java多執行緒總結六 經典生產者消費者問題實現
這是個執行緒同步的經典例子,源 如下 package demo.thread 經典生產者與消費者問題 生產者不斷的往倉庫中存放產品,消費者從倉庫中消費產品。其中生產者和消費者都可以有若干個。倉庫容量有限,庫滿時不能存放,庫空時不能取產品 public class producersandconsum...
java多執行緒總結六 經典生產者消費者問題實現
這是個執行緒同步的經典例子,源 如下 view plain font size 16px package demo.thread 經典生產者與消費者問題 生產者不斷的往倉庫中存放產品,消費者從倉庫中消費產品。其中生產者和消費者都可以有若干個。倉庫容量有限,庫滿時不能存放,庫空時不能取產品 publi...
java多執行緒經典例題 生產者 消費者問題
生產者 消費者問題 題目描述 生產者 productor 將產品交給店員 clerk 而消費者 customer 從店員處取走產品,店員一次只能持有固定數量的產品 比如 20 如果生產者試圖生產更多的產品,店員會叫生產者停一下,如果店中有空位放產品了再通知生產者繼續生產 如果店中沒有產品了,店員會告...