前面介绍已经介绍了线程三种队列了,剩下要学习队列已经没多少了,今天我们继续来学习一下另一个队列 ArrayBlockingQueue ,这个队列很简单,下面我们来看一下类图。我们先来知道 ArrayBlockingQueue BlockingQueue 实现类,那我们需要先看看 BlockingQueue 提供了哪些方法。public interface BlockingQueue&l
前言已经使用rxjava两个月了,觉得rxjava特别好用,爱不释手。本文目的通过几百行代码,帮助大家理解rxjava链式调用,操作符,线程切换如何实现。如果有写不对地方欢迎在评论区留言,如果觉得写可以,请点赞,关注,谢谢。代码链接: github 目录:RxJava编程思想1-(实现简易版Rxjava,如何基本功能和链式调用?)RxJava编程思想2-(实现简易版Rxjava
转载 2023-11-22 16:17:38
33阅读
在之前几篇博客中,我编写了一篇有关Rxjava学习笔记,还有一个RxJava使用示例(一): 实现Rxbus代替eventbus(这篇博文其实还不算完善,因为没有对被观察者发出时间进行一个筛选,一次发送所有订阅者都会收到,这样不太好,可以再新加一个筛选器,等以后有空或者遇到时候再来改一改,现在不急)。之前在写那边Rxjava学习笔记时候,就突出了一点只涉及使用,不涉及原理,现在就对
RxJava在项目开发中用得还是比较多,它能将复杂嵌套调用转为链式调用,减轻代码复杂性,方便于代码后期维护工作。用得多了,自然想看下内部实现原理,毕竟这么牛逼框架,其内部实现思想也是值得学习,再者之前面试问到了RxJava原理。所以这里就来记录下(代码基于2.x),也方便后续复习。基本使用Observable.just("1") .subscribe(object : O
作者:Pierce Zaifman RxJava线程大多数情况下,我写 Android 代码都是可以流畅运行。直到上几周编写一个需要读取和分析大型文件 app 之前,我从未关心过 app 运行速度问题。尽管我期望用户明白文件越大,耗时越长道理,有时候他们仍会放弃我应用。他们可能认为应用卡住了,也可能是因为他们就不想等那么久。所以如果我能把时间缩短至少一半的话,一定会大有裨益
转载 2023-10-30 23:59:34
67阅读
目录RxJava简单介绍文章目的环境搭建和代码示例分析subscribeOn(Schedulers.io())Schedulers.io()subscribeOn()总结 RxJava简单介绍RxJava现在几乎每个Android项目中都有它身影,RxJava使用了Rx(ReactiveX)函数库语言库,Rx一个函数库,让开发者可以利用可观察序列和LINQ风格查询操作符来编写异步和基于事
转载 2023-08-28 20:04:12
91阅读
前言通过前一篇RxJava2 如何实现线程切换 (上)我们已经知道了在RxJava中,subscribeOn 将上游线程切换到指定线程如何实现。这里就接着来看,observeOn 如何将下游线程切换到指定线程RxJava - subscribeOn这里可以通过UML图简单回顾一下subscribeOn原理。 通过 subscribeOn 我们完成了以下操作:创建了一个 Ob
转载 2023-07-25 21:11:11
77阅读
RxJava整个流程分为三个步骤 从上到下创建任务链,这里没有涉及线程调度。默认执行在当前线程,在这里也就是主线程。自下向上逆向订阅,这个过程subscribeOn起作用,observeOn不起切换线程作用。从上到下执行,类似map中代码,这时候observeOn起切换线程作用。也是为什么subscribeOn只有第一次起作用,observeOn每次都起作用。 Q1:为什么
前言Rxjava由于其基于事件流链式调用、逻辑简洁 & 使用简单特点,深受各大 Android开发者欢迎。本文主要讲解线程控制(也称为调度 / 切换),即讲解功能性操作符中:subscribeOn() & observeOn()目录1. RxJava线程控制(调度 / 切换作用是什么?指定 被观察者 (Observable) / 观察者(Observer)
切换线程在上游和下游之间增加切换线程操作,如果手写map操作符明白的话, 这里就很简单。使上游执行在子线程ObservableOnSubscribe子类// 上游处理 异步线程 Observable子类 [给所有上游 切换异步线程] public class ObservableOnIO<T> implements ObservableOnSubscribe<T
目录一、线程切换1.理解线程切换原理有什么意义?2.实现方式二、背压1 问题2. 背压策略简介2.1 定义2.2 作用2.3 解决问题2.4 应用场景3. 背压策略原理4. 背压策略具体实现:Flowable4.1 Flowable 特点4.2 Flowable基础使用5.1控制 观察者接收事件 速度5.1.1 异步订阅情况5.1 .2 同步订阅情况5.2 控制 被观察者发送事件
【谜之RxJava (二) —— Magic Lift】Rxjava -- 一个异步库RxJava最迷人是什么?答案就是把异步序列写到一个工作流里!和javascriptPromise/A如出一辙。OK,在java中做异步事情在我们传统理解过来可不方便,而且,如果要让异步按照我们工作流来,就更困难了。但是在RxJava中,我们只要调用调用subscribOn()和observeOn()就能
转载 2023-06-25 20:34:37
149阅读
RxJava简介RxJava现在大火一个异步框架,他代码简洁好懂,功能强大,扩展性高,维护难度小。RxJava最吸引人功能就是它线程切换功能。在Android开发中,UI组件只能在主线程中进行,但是主线程中执行太复杂逻辑又会导致APP卡顿,因此灵活线程切换一个安卓开发工程师必会技能。RxJava提供了优秀线程切换能力,能在不同线程执行规定逻辑代码。这次就来聊一聊RxJava
线程控制 —— Scheduler由于 Rx 目标用在异步系统上并且 Rx 支持多线程处理,所以很多 Rx 开发者认为默认情况下 Rx 就是多线程。 其实实际情况不是这样,Rx 默认线程。在不指定线程情况下, RxJava 遵循线程不变原则,即:在哪个线程调用subscribe(),就在哪个线程生产事件;在哪个线程生产事件,就在哪个线程消费事件。如果需要切换线程,就需要用到 S
RxJava切换线程怎么实现呢?lift变换过程要明白 RxJava 切换线程切换线程原理,我们首先得理解变换过程。 对于变换过程,我理解就是:Observable.create(new Observable.OnSubscribe<String>() { @Override public void call(Subscriber<? s
转载 4月前
408阅读
前言在上篇文章对RxJava 工作流程进行简单分析,今天来分享一下线程切换流程。如果觉得源码枯燥可以直接移至文末看图理解。实例代码Observable.create(new ObservableOnSubscribe<Object>() { @Override public void subscribe(@NonNull Obse
转载 2023-09-22 11:11:17
43阅读
在开发当中只要不是静态页面,我们都要对后台服务器发起网络请求。总所周知,发起网络请求是一个耗时操作,一般耗时操作都必须开启一个子线程来进行请求,从网络端拿到数据之后我们要将数据set到各种UI控件中去。但是坑爹,在子线程之中我们并不能更新UI,必须在主线程(又称UI线程)进行数据set,因此我们又必须切换到主线程去做处理。这样一会儿子线程,一会儿主线程切换处理,非常让人头疼,代码往往
0.前言没拜读过强大代码就建议去稍微看一下rxjava2原理,并不难懂。写非常好,也能领略到大佬写代码有多么强。里面的设计模式真的牛逼1.Rxjava2Rxjava2用于我们来做响应式编程模式操作。用起来很简单,但是如果面试/其它场合下让你去写一些骚操作或者说其中原理,真的蒙蔽不行…然后去研读其代码,发现很多文章写优点乱.让我有点理不清楚. 这就当算是我阅读源码理解吧…2.文
Rxjava 2.x 源码系列 - 基础框架分析Rxjava 2.x 源码系列 - 线程切换 (上)Rxjava 2.x 源码系列 - 线程切换 (下)Rxjava 2.x 源码系列 - 变换操作符 Map(上)前言在上一篇博客 Rxjava 2.x 源码系列 - 线程切换 (上) 我们讲解到,Observable#subscribeOn 如何控制上游 Observable 执行线程,他
参考资料: 基本功:线程上下文切换 进程/线程上下文切换会用掉你多少CPU? https://zhuanlan.zhihu.com/p/797720891. 名词解释:时间片 多任务系统往往需要同时执行多道作业。作业数往往大于机器CPU数,然而一颗CPU同时只能执行一项任务。利用了时间片轮转方式,让用户感觉任务正在同时进行 时间片CPU分配给各个任务(线程时间。线程上下文 指某一时间点
  • 1
  • 2
  • 3
  • 4
  • 5