前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >基于rxjava的生产消费模型

基于rxjava的生产消费模型

作者头像
加多
发布2018-09-06 15:13:31
6230
发布2018-09-06 15:13:31
举报
文章被收录于专栏:Java编程技术Java编程技术

一、前言

最近在看springcloud的熔断机制的实现,发现底层使用的rxjava实现,就看了下rxjava的使用,发现rxjava使用可也便捷实现前面讲解的定时生产与消费。

二、rxjava版生产消费实现

在简单抽象下要实现的功能,定时器线程间隔3秒生成一个任务,假如任务里面有3个子任务,则消费线程要分3秒,每秒消费一个子任务。

image.png

  • prouducerTimer是一个定时器做生产者使用,间隔3s调用一次run方法
  • 代码(1)创建一个任务
  • 代码(2)创建一个观察者对象,Observable.interval方法间隔1秒发射出一个对象,比如第一秒发射出0,第二秒发射出1....。但是我们要模拟是只需要3s的情况,所以使用take方法只获取Observable.interval观察者对象里面的TAG_QUEUE_SIZE=3个元素。这里保证了生成的观察这对象只会发射出3个元素,并且是间隔1s发出。但是这时候发射出的是0,1,2而不是代码(1)生成的任务。所以使用flatMap方法对元素进行转换,转换为代码(1)生成的元素。
  • 代码(3)创建一个观察者并订阅观察者对象。

运行代码输出如下:

image.png

可知同一个元素在连续的3s内被消费了。

三、总结

rxjava的功能挺强大的,合理的排列他提供的功能可以大大简化我们的开发成本。 作者:加多

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018.02.01 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、前言
  • 二、rxjava版生产消费实现
  • 三、总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档