[Java][多线程]《Java多线程编程实战》——第7章 Producer-Consumer(生产者/消费者)模式

Producer-Consumer模式的核心是通过通道对数据(或任务)的生产者和消费者进行解耦,从而使二者的处理速率相对来说互不影响。

类图

BlockingQueueChannel:

  • 当队列满时,将当前线程挂起直到队列非满
  • 当队列为空时,将当前线程挂起直到队列非空

通道积压的常见解决方法:

  • 使用有界阻塞队列
  • 使用带流量控制的无界阻塞队列

工作窃取算法:
一个通道可以对应一个或者多个队列实例。当一个消费者线程处理完该线程对应的队列中的“产品”时,可以继续从其他消费者线程对应的队列中取出“产品”进行处理。
线程的停止:
当某个服务的所有Producer参与者的工作者线程都停止之后,再停止该服务涉及的Consumer参与者的工作者线程。
停止Consumer参与者的工作者线程前是否考虑要等待其处理完所有待处理的“产品”或者将这些“产品”做个备份也是个问题。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值