参考资料:
基本功:线程上下文切换
进程/线程上下文切换会用掉你多少CPU? https://zhuanlan.zhihu.com/p/797720891. 名词解释:时间片
多任务系统往往需要同时执行多道作业。作业数往往大于机器的CPU数,然而一颗CPU同时只能执行一项任务。利用了时间片轮转的方式,让用户感觉任务正在同时进行
时间片是CPU分配给各个任务(线程)的时间。线程上下文
指某一时间点
转载
2023-08-01 18:19:18
87阅读
前言经过前几篇的介绍,对RxJava对模式有了一定的理解:由Observable发起事件,经过中间的处理后由Observer消费。(对RxJava还不了解的可以出门左拐) 之前的代码中,事件的发起和消费都是在同一个线程中执行,也就是说之前我们使用的RxJava是同步的~~~ 观察者模式本身的目的不就是后台处理,将处理结果回调给前台?这同步的是要哪样?所以,这篇为大家介绍RxJava的重要的概念——
转载
2024-06-25 07:17:10
46阅读
切换线程在上游和下游之间增加切换线程的操作,如果手写map操作符明白的话, 这里就很简单。使上游执行在子线程的ObservableOnSubscribe的子类// 上游处理 异步线程的 Observable的子类 [给所有上游 切换异步线程]
public class ObservableOnIO<T> implements ObservableOnSubscribe<T
转载
2023-08-05 13:33:34
94阅读
http://lavasoft.blog.51cto.com/62575/99150 作者 熔岩最近在学习JAVA多线程部分,看到一个系列博文写得非常好,为了作为自己的学习纪录,并方便日后复习,因此全部转到自己的博客,并在部分地方加上自己的理解和补充。
Java线程:概念与原理
SCJP5学习笔记
RxJava称为响应式编程 RxJava也称为异步事件流编程 线程的切换很重要一.subscribeOn 给上面代码分配线程.subscribeOn(
Schedulers.io() // 耗时读取的异步
)1.先分析Schedulers.io() 和它的hook@NonNull
pub
转载
2023-09-29 10:00:07
95阅读
【谜之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 更新操作,而将耗时的网络请求或者数据库查询等操作放在后台线程执行,以避免阻塞主线程导致
原创
2024-01-31 11:58:02
120阅读
目录RxJava线程切换简单demo使用从observeOn操作符开始分析总结题外话题,QueueDisposable RxJava线程切换我们知道使用rxJava的最重要使用场景就是获取网络请求数据或者是数据库数据等等异步耗时操作的,所以对rxJava线程切换的掌握也十分重要,这一章我们来讲一讲rxJava的线程切换是怎么实现的。简单demo使用Log.e(TAG,"主线程ID:"+Threa
转载
2023-08-08 16:26:04
123阅读
在之前的几篇博客中,我编写了一篇有关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阅读
前言基于RxJava2.1.1我们在前面的 RxJava2.0使用详解(一)初步分析了RxJava从创建到执行的流程。RxJava2.0使用详解(二) 中分析了RxJava的随意终止Reactive流的能力的来源;也明白了RxJava的onComplete();与onError(t);只有一个会被执行的秘密。RxJava2.X 源码分析(三)中探索了RxJava2调用subsc
转载
2024-08-19 10:26:48
46阅读
在RxJava的使用过程中,通常会用subscribeOn来指定可观察者Observable的线程,用observerOn来指定观察者Observer的线程。本文将分析RxJava2.x的线程切换原理先来看一个例子Observable.create(new ObservableOnSubscribe<Integer>() {
@Override
转载
2023-06-21 21:02:41
220阅读
线程切换操作符, 是RxJava不可获取的操作符。1.subscribeOn用于给上游配置异步线程,即使给上游分配多次,只会在第一次切换,后面的不切换了。2. observeOn用于给下游配置异步线程,给下游分配多次,每次都会切换。以最后一次为准。3. 线程类型Schedulers.io(): 代表io流操作,网络操作,文件流等耗时操作。 里面其实就是一个线程池。Schedulers.n
转载
2023-08-22 16:29:01
92阅读
简介RxJava的核心是异步;Schedulers实现发射和接收事件在两种不同的线程中去执行相应的操作; 调度器(Schedulers )是RxJava中最重要的一部分,随意的切换调用线程;Schedulers在RxJava中主要有一下几种方式:SingleScheduler:共享的,单一线程的调度器;内部有一个核心线程数为1,最大线程数为Integer.MAX的线程池;Computa
转载
2023-11-13 14:20:44
137阅读
前言最近跟朋友聊天,聊到了最近面试的高频题目就聊到了RxJava 的线程切换原理。我们Android 开发大部分应该 RxJava 都用的很6,RXJava + Retrofit + OkHttp 大礼包都用的贼6。自从用了 RxJava 之后 ,Handler 和 SyncTask 基本消失在日常代码中啦。所以本篇就从源码的角度分析 RxJava 线程切换的原理。注意: 本篇的源码基于 RxJa
转载
2023-07-25 23:49:18
160阅读
基本代码来看一下基本代码:Observable.create((ObservableOnSubscribe<Integer>) e -> {
e.onNext(1);
e.onNext(2);
e.onComplete();
}).subscribeOn(Schedulers.io())
转载
2023-08-04 15:39:12
143阅读
闲谈RxJavaRxJava:"a library for composing asynchronous and event-based programs using observable sequences for the Java VM"(一个在 Java VM 上使用可观测的序列来组成异步的、基于事件的程序的库)异步。它其实就是一个实现异步操作的库,基于观察者模式,而且是链式调用的。RxJa
转载
2024-02-27 21:32:43
35阅读
RxJava简介RxJava是现在大火的一个异步框架,他代码简洁好懂,功能强大,扩展性高,维护难度小。RxJava最吸引人的功能就是它的线程切换功能。在Android开发中,UI组件只能在主线程中进行,但是主线程中执行太复杂的逻辑又会导致APP卡顿,因此灵活的线程切换是一个安卓开发工程师的必会技能。RxJava提供了优秀的线程切换能力,能在不同的线程执行规定的逻辑代码。这次就来聊一聊RxJava是
转载
2023-08-01 20:30:00
106阅读
在现代开发中,使用RxJava进行异步编程的线程切换是一项基本需求。RxJava以其强大的响应式编程特性受到开发者的青睐,但在实际应用中,线程切换的封装可能会带来一定的复杂性。本文将详细记录如何有效地进行RxJava线程切换封装的过程,包括环境准备、集成步骤等方面的内容。
## 环境准备
在开始之前,确保你的开发环境已正确设置。以下是依赖安装指南,确保使用合适的版本。
| 组件
使用方法还是先从最基本的使用开始看:Observable.create(new ObservableOnSubscribe<String>() {
@Override
public void subscribe(ObservableEmitter<String> emitter) throws Exception {
转载
2024-09-09 08:35:50
18阅读