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