当前位置: 首页 > 面试题库 >

可观察与可流动rxJava2

仲孙飞文
2023-03-14
问题内容

我一直在寻找新的rx java 2,但我不确定我是否已经明白了这个主意backpressure

我知道我们所拥有的Observable并没有backpressure支持Flowable

因此,基于例如,可以说我有flowableinterval

        Flowable.interval(1, TimeUnit.MILLISECONDS, Schedulers.io())
            .observeOn(AndroidSchedulers.mainThread())
            .subscribe(new Consumer<Long>() {
                @Override
                public void accept(Long aLong) throws Exception {
                    // do smth
                }
            });

在大约128个值之后,这将崩溃,这很明显我消耗的速度比获取项目要慢。

但是,我们有相同的 Observable

     Observable.interval(1, TimeUnit.MILLISECONDS, Schedulers.io())
            .observeOn(AndroidSchedulers.mainThread())
            .subscribe(new Consumer<Long>() {
                @Override
                public void accept(Long aLong) throws Exception {
                    // do smth
                }
            });

即使我延迟使用它,它仍然完全不会崩溃。为了Flowable工作,可以说我放了一个onBackpressureDrop运算符,崩溃已经消失了,但并不是所有值都被发出。

因此,我目前在脑海中找不到答案的基本问题是,为什么我应该关心backpressure何时可以使用Plain
Observable仍会接收所有值而不进行管理buffer?或者,也许从另一方面来看,backpressure我在管理和处理消费方面有哪些优势?


问题答案:

实际上,反压显示的是有界缓冲区,Flowable.observeOn缓冲区中包含128个元素,其流失速度与dowstream可以吸收的速度一样快。您可以单独增加此缓冲区的大小以处理突发信号源,并且所有反压管理实践仍从1.x开始适用。Observable.observeOn具有无限制的缓冲区,该缓冲区会不断收集元素,并且您的应用程序可能会耗尽内存。

您可以使用Observable例如:

  • 处理GUI事件
  • 使用短序列(总共少于1000个元素)

您可以使用Flowable例如:

  • 冷源和非定时源
  • 发电机一样的来源
  • 网络和数据库访问器


 类似资料:
  • 我一直在看新的rx java 2,我不太确定我是否理解了< code >背压的概念... 我知道我们有没有支持的和有背压。 因此,基于示例,假设我有与: 这将在大约128个值之后崩溃,很明显,我的消费速度比获取物品要慢。 但是< code>Observable也是如此 这将不会崩溃,即使我把一些消费延迟,它仍然工作。为了使< code >可流动工作,假设我将< code>onBackpressur

  • 问题内容: 学习了Observables之后,我发现它们与Node.js流非常相似。两者都有一种机制,可在新数据到达,发生错误或没有更多数据(EOF)时通知使用者。 我很想了解两者之间的概念/功能差异。谢谢! 问题答案: 无论 观测量 和node.js中的 流 让你解决同样的根本问题:异步处理值的序列。我认为,两者之间的主要区别与激发其外观的环境有关。该上下文反映在术语和API中。 在 Obser

  • 问题内容: 我一直在阅读Observer模式,以保持UI处于最新状态,但仍然看不到它的用途。即使在我的特定对象中通知了我的MainActivity然后运行update();方法我仍然无法使用Pet对象来获取更新值,因为该对象是在Oncreate中创建的…而我只是无法创建新对象,因为那时变量会有所不同..这是我的实施,它似乎不起作用。 观察者/ MainActivity 可观察/宠物 问题答案: 首

  • 我正在尝试开发我的第一个RxJava例子 我有一个带有文本框和三个按钮的主要活动。第一个按钮初始化单独类中的整数。第二个按钮订阅一个可观察量,该可观察量假定正在观察整数。第三个按钮将整数的值减小 1。 这是我的密码 和班级 当我尝试使用 订阅时,它只是给了我 的值(即 6),然后它给了我完成! 然后我尝试使用,认为我需要使用,只是而不是,但后来我得到了一个返回的空的,然后再次完成! 有人能帮助我从

  • 导览 本小节主要介绍 Apache ShardingSphere 可观察性的相关功能 应用性能监控集成

  • 我已经做javascript有一段时间了。然而,我对Angular 2还比较陌生,所以我对可观测的东西几乎一无所知。当我读到对可观测事物的描述时,它们听起来很像我已经知道的回调。当我问谷歌时,有回调和promise之间的比较,也有promise和可观察之间的比较。然而,我找不到回调和可观察之间的任何比较。 回调和可观察之间有什么区别?