首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

使用BackpressureStrategy的RxJava2 Flowable.create blockingSubscribe语义

是指在使用RxJava2中的Flowable.create方法创建Flowable时,通过指定BackpressureStrategy来处理背压(Backpressure)问题,并使用blockingSubscribe方法进行订阅。

背压是指当生产者产生的数据速度快于消费者处理数据的速度时,需要一种机制来控制数据流的速度,以避免消费者被淹没或内存溢出等问题。RxJava2提供了不同的BackpressureStrategy来处理不同的背压情况。

在Flowable.create方法中,可以通过指定BackpressureStrategy来选择不同的背压策略,其中包括:

  1. BackpressureStrategy.ERROR:当生产者产生的数据速度快于消费者处理数据的速度时,会抛出MissingBackpressureException异常,表示背压错误。
  2. BackpressureStrategy.BUFFER:当生产者产生的数据速度快于消费者处理数据的速度时,会将数据缓存到一个无限大的缓冲区中,直到消费者处理完毕。
  3. BackpressureStrategy.DROP:当生产者产生的数据速度快于消费者处理数据的速度时,会丢弃一部分数据,以保持数据流的稳定。
  4. BackpressureStrategy.LATEST:当生产者产生的数据速度快于消费者处理数据的速度时,会丢弃之前产生的数据,只保留最新的数据。

使用blockingSubscribe方法可以进行阻塞式的订阅,即在订阅时会阻塞当前线程,直到数据流处理完毕或发生错误。

推荐的腾讯云相关产品:腾讯云云函数(Serverless Cloud Function),它是一种无需管理服务器即可运行代码的计算服务,可用于处理各种事件驱动的任务,包括异步消息处理、数据处理、定时任务等。腾讯云云函数支持Java语言和RxJava2库,可以方便地使用RxJava2进行异步编程和处理背压问题。

产品介绍链接地址:腾讯云云函数

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

RxJava2--Flowable与BackPress

转载自:Rxjava2入门教程五:Flowable背压支持——对Flowable最全面而详细的讲解 背压介绍 当上下游在不同的线程中,通过Observable发射,处理,响应数据流时,如果上游发射数据的速度快于下游接收处理数据的速度...所以,如果能够确定: 上下游运行在同一个线程中, 上下游工作在不同的线程中,但是下游处理数据的速度不慢于上游发射数据的速度, 上下游工作在不同的线程中,但是数据流中只有一条数据 则不会产生背压问题,就没有必要使用...Flowable的使用 下例使用了Flowable来发射事件,大体与Observable类似,只是有几点区别: Flowable发射数据时,使用特有的发射器FlowableEmitter,不同于Observable...的ObservableEmitter create方法中多了一个BackpressureStrategy类型的参数,该参数负责当BackPress产生的时候,对应的Emitter的处理策略是什么样的...当缓存池的容量超过128条时,就会触发Backpress的应对策略。 BackpressureStrategy的作用便是用来设置Flowable通过异步缓存池缓存数据的策略。

86030
  • Android Rxjava :最简单&全面背压讲解 (Flowable)

    1.前言 阅读本文需要对Rxjava了解,如果还没有了解或者使用过Rxjava的兄die们,推荐观看 Android Rxjava:图解不一样的诠释 进行学习。...---- 4.使用与原理详解 4.1 Flowable 与 Observable 的区别 ?...上图可以很清楚看出二者的区别,其实Flowable 出来以上的区别之外,它其他所有使用与Observable完全一样。...4.4.2 request扩展使用 request还可进行扩展使用,当遇到在接收事件时想追加接收数量(如:通信数据通过几次接收,验证准确性的应用场景),可以通过以下方式进行扩展: Flowable.create...4.5 requested requested 与 request不是同一的函数,但它们都是属于FlowableEmitter类里的方法,那么requested()是有什么作用呢,看看以下例子: Flowable.create

    1.6K20

    Carson带你学Android:图文详解RxJava背压策略

    前言 Rxjava,由于其基于事件流的链式调用、逻辑简洁 & 使用简单的特点,深受各大 Android开发者的欢迎。 本文主要讲解的是RxJava中的 背压控制策略,希望你们会喜欢。...4.4 Flowable的基础使用 Flowable的基础使用非常类似于 Observable 具体如下 /** * 步骤1:创建被观察者 = Flowable */ Flowable...关于更深层次的使用会结合 背压策略的实现 来讲解 5....背压策略的使用 在本节中,我将结合 背压策略的原理 & Flowable的使用,为大家介绍在RxJava 2.0 中该如何使用Flowable来实现背压策略功能,即背压策略的使用 Flowable与Observable...在功能上的区别主要是 多了背压的功能 下面,我将顺着第3节中讲解背压策略实现原理 & 解决方案(如下图),来讲解Flowable在背压策略功能上的使用 注: 由于第2节中提到,使用背压的场景 = 异步订阅关系

    1.2K10

    深入RxJava2 源码解析(一)

    其简化了异步多线程编程,在以前多线程编程的世界中,锁、可重入锁、同步队列器、信号量、并发同步器、同步计数器、并行框架等都是具有一定的使用门槛,稍有不慎或者使用不成熟或对其源码理解不深入都会造成相应的程序错误和程序性能的低下...RxJava2 Rx有很多语言的实现库,目前比较出名的就是RxJava2。本文主要讲Rxjava2的部分源码解读,内部设计机制和内部执行的线程模型。 ?...基本使用 使用RxJava2大致分为四个操作: 建立数据发布者 添加数据变换函数 设置数据发布线程池机制,订阅线程池机制 添加数据订阅者 // 创建flowable Flowable>> esFlowable = Flowable.create(new ElasticSearchAdapter(), BackpressureStrategy.BUFFER...以FlowableSubscribeOn为例进行分析,这个类经常会用到,因为其内部设置了线程池的机制所以在实际使用项目中会大量使用,那么是如何做到线程池方式的呢?进一步利用源码进行分析。

    1.2K20

    Android 中 RxJava2 的实际使用

    库 Android 中 RxJava 的使用 Rx相关依赖 implementation 'io.reactivex.rxjava2:rxandroid:2.0.2' implementation 'io.reactivex.rxjava2...implementation 'com.lzy.net:okrx2:2.0.2' //JSON转换 implementation 'com.alibaba:fastjson:1.2.46' Rx相关的库...https://github.com/ReactiveX/RxJava ——RxJava核心库 https://github.com/ReactiveX/RxAndroid ——RxJava在Android中使用的扩展库...——帮助RxJava在Android中生命周期的控制,避免内存溢出等问题 https://github.com/pushtorefresh/storio ——数据库对RxJava的支持 https:/...throttleLast操作符:仅发送指定时间段内的第一个信号 Java //对于button的防抖处理 1秒内只截取第一次的点击事件,还有一个截取最后一次的方法 //throttleFirst(2,

    1K10

    再忆RxJava---背压策略

    1 背压存在的背景 被观察者 发送事件速度太快,而观察者 来不及接收所有事件,从而导致观察者无法及时响应或者处理所有发送过来事件的问题,最终导致缓存区溢出、事件丢失 & OOM 2 背压策略的原理 2.1...---对多余的数据进行有选择的抛弃,或者保留,或者报错 3 背压具体情况讨论 3.1 同步策略 Flowable.create(new FlowableOnSubscribe<String...emitter.onNext("333"); emitter.onComplete(); } }, BackpressureStrategy.ERROR...queue.offer(t)) {//这个queue就是FlowableObserveOn的构造函数中的prefetch大小的一个队列。...存在问题就是可能会超出缓存队列,可以用BackpressureStrategy.ERROR来处理等等 参考文献 https://www.jianshu.com/p/ceb48ed8719d

    68020

    用kotlin来实现dsl风格的编程

    它主要的目的是用来替代以前XML的方式来使用代码生成UI布局。...简单封装OkHttp OkHttp是一个成熟且强大的网络库,在Android源码中已经使用OkHttp替代原先的HttpURLConnection。...很多著名的框架例如Picasso、Retrofit也使用OkHttp作为底层框架。在这里我对OkHttp做一下简单的封装,其实封装得有点粗暴只是为了演示如何实现dsl。...dsl风格使用滤镜.png cv4j 目前已经支持了几十种滤镜,当然除了滤镜还有其他功能,感兴趣的童鞋可以看我们的源码:)。 总结 使用dsl的代码风格,可以让程序更加直观和简洁。...另外,众所周知的Gradle也是基于DSL的Java构建工具。 参考资料: 使用kotlin写自己的dsl>> Type-Safe Builders

    89720

    锦囊篇|一文摸懂RxJava

    RxJava 是一个在 Java VM 上使用可观测的序列来组成异步、且基于事件的程序的库。...在看源码的解决方案之前,我们先进行一个思考,请看下图: 注: 并不直接对应实际代码 对应源码中的基本使用 Flowable.create({ emitter -> //...: Flowable: 也就是背压的实现类 Subscriber: 订阅,和Observer差不多,但是多了一些适配Flowable的功能 BackpressureStrategy: 着重讲解。...BackpressureStrategy/背压策略 这也就是我们上文中所思考的问题了,现在先看看RxJava给我们提供了什么样的方案。...总结 参考资料 Carson_Ho大佬的RxJava的系列文章:https://www.jianshu.com/p/e1c48a00951a 详解 RxJava2 的线程切换原理:https://www.jianshu.com

    81920

    支持MVVM的BRVAH来了!

    使用本控件的前提,项目使用MVVM开发模式,列表适配器是使用BRVAH的 BaseRecyclerViewAdapterHelper万能适配器(本控件支持非使用AndroidX和使用AndroidX的条件...,可扩展的多布局使用 下拉刷新,上拉加载 仿聊天界面,从下到上加载数据 双列表使用,仿外卖(甚至可以更多列表) 支持使用自己的适配器来调用 支持列表侧滑 地址 废话不多说,先上Github的demo。...private Flowable> getData() { return Flowable.create(new FlowableOnSubscribe...load()中的回调,调用了load(getData())来加载数据(我这边使用rxjava来模拟数据的加载,现在的项目基本都是用retrofit和rxjava结合获取网络请求)。...的监听,在布局中绑定,当spinner使用时,会回调这个方法.

    1.2K20
    领券