图解java多线程设计模式 (结城浩)

一.Producer-Consumer(生产者-消费者)模式,书在python33点(0M
1.几种角色理解
(1)Data:由Producer角色生成,供Consumer角色使用

(2)Producer(生产者):生成Data角色,并将其传递给Channer通道角色

(3)Consumer(消费者):从Channel角色获取Data角色并使用

(4)Channel(通道):Channel角色保管从Producer角色获取的,还会相应Consumer角色的请求,传递Data角色。为了保证安全性,Channel会对Producer和Consumer的访问执行互斥处理。

一些处理规则:

当Producer将Data传给Channel时,如果Channel状态不适合接收,则等待;

当Consumer从Channel获取Data时,如果Channel没有可传递的Data,则等待;

当存在多个Producer和Consumer时为了避免各处理相互影响,Channel应执行互斥处理

2.为什么不直接传递而是通过中间的Channel
为了避免Producer和Consumer之间直接调用,Producer角色将Data传递给Consumer,无需等待Consumer的处理又可以准备下一个Data角色,同理Consumer的消费也无需等待。他俩不会相互影响,提高了性能。

  • 9
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值