〖JAVA经验〗JAVA技巧(Java线程间的通信)

线程间的通信(生产者-消费者模式)

有如下情形,线程A向盘子里放桔子(盘子很小,只能容得下一个桔子),放完桔子后,如果其它线程没有来拿桔子,则A下次再放桔子时,留在盘子里的上次那个桔子就被覆盖掉了(现实并非这样),但我们并不希望这个可口的桔子就这样被第二个桔子覆盖掉。我们的理想情况是:线程A每次在盘子里放完一个桔子后,马上通知其它线程来取这个桔子,这时,线程A就暂停放桔子在盘子里,其它线程取走桔子之后,马上通知A桔子已经被取走,这时,A继续放下一个桔子,并通知其它线程来取,这样反复下去(为了不让产生者永久的放,消费者永久地取,可限定生产者一共要放100次桔子)……于是,放一个就取走一个,所有桔子都被成功取走。

在上述案例子中,线程A与线程B之间是生产者与消费者的关系,线程A生产桔子,把桔子在盘子里,线程B从盘子里拿走桔子,享受美味。而且,为了达到生产一个,拿走一个,这样的一对一的过程,线程A必须告诉线程B:桔子已经放好了,来拿吧,你拿走了,我再放下一个。当线程B拿走后,必须告诉线程A:我把桔子拿走了,你快放下一个吧。线程A和B互相告诉对方的动作,就是线程间的通信。

取放桔子的整个过程,涉及到了四个对象,分别是生产者(线程A),消费者(线程B),消费的商品(桔子),商店(盘子)。因此,可以把上述过程看作是生产者和消费者在商店里交易桔子。

一起交流学习请访问:Tore_m_1206686_21115_1_1.html”>http://www.shangxueba.com/sTore_m_1206686_21115_1_1.html

年轻是胜利的一半。

〖JAVA经验〗JAVA技巧(Java线程间的通信)

相关文章:

你感兴趣的文章:

标签云: