生產者和消費者

2022-05-27 08:45:15 字數 1270 閱讀 4299

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;

}}

生產者消費者 生產者與消費者模式

一 什麼是生產者與消費者模式 其實生產者與消費者模式就是乙個多執行緒併發協作的模式,在這個模式中呢,一部分執行緒被用於去生產資料,另一部分執行緒去處理資料,於是便有了形象的生產者與消費者了。而為了更好的優化生產者與消費者的關係,便設立乙個緩衝區,也就相當於乙個資料倉儲,當生產者生產資料時鎖住倉庫,不...

生產者和消費者

package demo.one public class producerconsumerdemo 資源 class resource catch interruptedexception e this.name name count system.out.println thread.curre...

生產者和消費者

package com.yuxinyicheng.test2 生產者和消費者的問題 生產者將產品交給店員,而消費者從店員處取走產品,店員一次只能有固定數量的產品 比如 20個 如果生產者試圖生產更多的產品,店員會叫生產者停一下,如果店員中有空位放產品,再通知生產者繼續生產 如果店中沒有產品,店員會告...