`
hbkh2000
  • 浏览: 197314 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Java多线程 生产者-消费者模式

阅读更多

 1.生产者-消费者模式实现概述
  生产者与消费者模式是我们在编程过程中经常会遇到的,就像我们生活那样,生产者生产出产品,消费者去购买产品。在这里我们创建三个线程,一个主控线程main,用于创建各辅助线程;一个生产者线程,用于生产产品;一个消费者线程,用于购买产品。另外,我们创建一个队列类Queue,生产线程生产的产品将放置到该队列中,然后消费者线程在该队列中取走产品。
  2.实现该模式的要点:
  首先必须让生产者线程与消费者线程达到同步,也就是说,当生产者线程生产出产品后,消费者才能去取,依此轮回。当生产者线程放置产品到队列中时,队列要检查队列是否已满,如已满,则等待消费者线程将产品取走,否则放置产品到队列中。当消费者线程在队列中取产品时,队列也要检查队列是否为空,如果为空,则等待生产者线程放置产品到队列,否则在队列中取走产品。
  3.源代码:见附件

分享到:
评论
3 楼 j_peng 2012-03-09  
ccxw1983 写道
运行下就不动了,也不死,运行结果:
c2要消费80个,由于现在只有50个,c2于是去等待!
c1要消费70个,由于现在只有50个,c1于是去等待!
P1生产了50个,现在有100个。
P2生产了200个,现在有300个。
P3要生产290个,当前300个,产品充足,不需要生产,P3去等待!
c1消费了70个,现在还剩下230个
c2消费了80个,现在还剩下150个
P3要生产290个,当前150个,产品充足,不需要生产,P3去等待!

2 楼 ccxw1983 2010-09-05  
运行下就不动了,也不死,运行结果:
c2要消费80个,由于现在只有50个,c2于是去等待!
c1要消费70个,由于现在只有50个,c1于是去等待!
P1生产了50个,现在有100个。
P2生产了200个,现在有300个。
P3要生产290个,当前300个,产品充足,不需要生产,P3去等待!
c1消费了70个,现在还剩下230个
c2消费了80个,现在还剩下150个
P3要生产290个,当前150个,产品充足,不需要生产,P3去等待!
1 楼 wangweiufofly 2009-12-31  
很简单,但是很清晰,非常感谢,理解又深了些~

相关推荐

Global site tag (gtag.js) - Google Analytics