首页
学习
活动
专区
工具
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_Sqlite_Android数据库访问实例

一、使用Rxjava访问数据库优点: 1.随意线程控制,数据库操作在一个线程,返回数据处理在ui线程 2.随时订阅和取消订阅,而不必再使用回调函数 3.对读取数据用rxjava进行过滤,流式处理...4.使用sqlbrite可以原生返回rxjava格式,同时是响应式数据库框架 (有数据添加和更新时自动调用之前订阅了读取函数,达到有数据添加自动更新ui效果, 同时这个特性没有禁止方法,只能通过取消订阅停止这个功能...,对于有的框架这反而是一种累赘) 二、接下来之关注实现过程: 本次实现用rxjava2Flowable,有被压支持(在不需要被压支持情况建议使用Observable) 实现一个稳健可灵活切换其他数据库结构...使用方法 //数据库操作代码 e.onNext(false);//返回结果 e.onComplete();//返回结束 } }, BackpressureStrategy.BUFFER);...使用方法 //数据库操作代码 e.onNext(false);//返回结果 e.onComplete();//返回结束 } }, BackpressureStrategy.BUFFER);

67320

RxJava2--Flowable与BackPress

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

85330
  • 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

    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

    深入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

    66720

    锦囊篇|一文摸懂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

    80720

    用kotlin来实现dsl风格编程

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

    89220
    领券