rxjava是什么

该文章只是介绍了一些基本概念

reactiveX 

近几年,反应式编程很火,那么reactivex是什么呢,一句话概括:reactiveX 是一个跨语言的标准、规范。

由来:reactivex是最开始是一个在微软的计算机科学家发明的,是一个编程的框架,当时用的是.net语言,全称是reactive extensions 也叫reactiveX 或者 RX。

实现的语言:scala、kotlin、groovy、js、android、java等

Rxjava

java开发都听过rxjava,rxjava的全称是reactivexjava,是jvm的reactivex的一个实现。是一个library、类似于 httpServlet、springmvc这种的 对 servlet的实现。目前java语言实现rx的有 jdk9的Flow api、rxjava(现在是2.0版)、Spring Framework 5的 reactor。最流行的是rxjava,可以参考LearningRxjava这本书学习。

reactivex 核心思想

核心其实是观察者模式、主要想解决问题:并行、异步。都说rx天生是异步的、并行的。怎么理解呢

官方例子:一个人同时干三件事情。不相关的三件,可以找两个人三个人一起干,rt就是最长的那件事情的时间,这个就是并行做三件事情。那么对于的rx里就是流的概念,单个流内是串行的,多个流之间才是并行的。异步就是多线程的概念,和java里的异步没有区别。

反应式核心是观察者模式,和java.util。Observable的区别在哪里呢?

1、语法,支持lambda,很简洁、灵活。

2、支持背压(backpressure)由消费者来指定消费能力。支持好几种模式的背压策略。

3、支持数据转换。看起来像是流,在数据到达observer(在rx中一般叫 Subscriber)之前可以有很多操作(指定线程、数据转换等)。可以比喻流(生产者)就是流水线,可以将原材料加工成最终消费者需要的东西,那么流水线上可以有很多的操作,例如

Observable.just("a")
.map(o->o.length())
.map(o->o+100)
.filter(Objects::notNull)
.map(o->""+o)
.subscribe(System.out::print)

虽然没有啥实际作用。但是可以看出来,在subscribe之前可以做很多转换。

4、支持hot、cold模式,简单概括就是 消息传播方式:能不能收到全量消息,hot模式,就像广播,无论你什么时候订阅,消息只播放一遍,订阅的迟了,只能收到部分消息。而cold模式,就是音乐cd,任何时候订阅都能收到全量消息。这个由具体的类来完成这种功能,大部分的流都是cold模式。

 

 

 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值