Rxjava学习一项复杂技术的策略, 不要求完全掌握, 只要求边缘切入, 逐步向内扩展。Scheduler 的 API在RxJava 中,Scheduler ——调度器,相当于线程控制器,RxJava 通过它来指定每一段代码应该运行在什么样的线程RxJava 已经内置了几个 Scheduler ,它们已经适合大多数的使用场景:Schedulers.immediate(): 直接在当前线程运行,相
转载 2024-10-29 08:58:50
8阅读
在不指定线程的情况下, RxJava 遵循的是线程不变的原则,即:在哪个线程调用 subscribe(),就在哪个线程生产事件;在哪个线程生产事件,就在哪个线程消费事件。如果需要切换线程,就需要用到 Scheduler (调度器)。1) Scheduler 的 API (一)在RxJava 中,Scheduler ——调度器,相当于线程控制器,RxJava 通过它来指定每一段代码应该运行在什么样的
快速上手下面笔者利用Retrofit配合协程实现一个登录功能首先需要添加以下依赖库implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:1.3.0" implementation 'com.squareup.retrofit2:retrofit:2.6.2' implementation 'com.squareup.ret
# RxJava指定线程实现指南 ## 1. 概述 在RxJava中,使用指定线程可以控制数据流的执行线程,从而实现任务的并发处理、避免UI线程阻塞等目的。本文将指导从入门的小白如何使用RxJava来实现指定线程。 ## 2. 实现步骤 为了更清晰地了解整个实现流程,我们可以使用以下表格来展示每个步骤和相应的代码: | 步骤 | 代码
原创 2023-10-29 09:07:48
32阅读
概述本文将分析下rxjava线程池相关的源码。 本文的内容大概有以下:Schedulers.io()源码线程工厂RxThreadFactory源码线程池CachedWorkerPool源码Worker的创建与调用Schedulers.io()源码rxjava内置的线程池除了io,还有newThead,single等,它们的逻辑都是类似的,本文就以io为例子来进行解析。demo代码:Observab
转载 2023-08-22 20:47:19
194阅读
# 如何实现“RxJava指定那个线程” ## 介绍 在RxJava中,我们可以通过指定特定的线程来控制Observable的行为,比如在io线程执行网络请求,在主线程更新UI等。本文将向你展示如何在RxJava指定特定的线程。 ## 流程步骤 ```mermaid journey title RxJava指定线程实现流程 section 定义Observable
原创 2024-06-24 04:30:04
11阅读
# 使用RxJava指定线程池 在Android开发中,我们经常会使用RxJava来处理异步操作和事件流。RxJava中的线程切换是一个重要的话题,通过指定线程池可以更好地控制线程的调度和管理。本文将介绍如何在RxJava指定线程池来实现更灵活的线程调度。 ## RxJava简介 RxJava是一个基于响应式编程的库,它简化了异步操作和事件流的处理。RxJava中的核心概念是Observa
原创 2024-04-21 03:43:08
67阅读
前言基于RxJava2.1.1本次我们将探索RxJava2.x线程切换的实现原理。做到知其然,知其所以然。Ok,开始我们的探索之旅吧!从Demo到源码本次我们将在上次的demo基础了做点改动。版本1:不存在线程切换observable.subscribe(observer);输出结果:版本2:切换线程(切换操作是如此的潇洒)输出结果:结果分析(因为我用的是@RunWith(AndroidJUnit
RxJava 的默认规则中,事件的发出和消费都是在同一个线程的。也就是说,如果只用上面的方法,实现出来的只是一个同步的观察者模式。观察者模式本身的目的就是『后台处理,前台回调』的异步机制,因此异步对于 RxJava 是至关重要的。而要实现异步,则需要用到 RxJava 的另一个概念: Scheduler 。在不指定线程的情况下, RxJava 遵循的是线程不变的原则,即:在哪个线程调用 sub
转载 2023-09-28 15:58:57
57阅读
引言ArrayList线程安全问题1 ArrayList存在的线程安全问题2 通过内部类解决线程安全问题这里以add方法为例3 通过JDK提供我们的api将ArrayList修改为线程安全的SimpleDateFormat存在的线程安全问题1 SimpleDateFormat线程非安全2 使用多个SimpleDateFormat对象总结 1.引言      在前两篇
转载 2024-10-11 10:29:24
8阅读
# 如何实现"rxjava 任务指定线程池" ## 流程表格 | 步骤 | 操作 | | --- | --- | | 1 | 创建一个线程池 | | 2 | 使用RxJava的`observeOn`操作符指定线程池 | | 3 | 在观察者中执行任务 | ## 操作步骤 ### 步骤一:创建一个线程池 在Java中,我们可以使用`Executors`类来创建线程池。以下是创建一个具有固定
原创 2024-04-17 03:45:10
83阅读
# RxJava指定其他线程执行的科普文章 RxJava 是一种基于观察者模式的响应式编程库,它能够简化异步编程和事件驱动编程。在使用 RxJava 时,有时我们需要在特定的线程上执行任务,比如在 I/O 密集型操作中将耗时工作移到后台线程,以避免阻塞 UI 线程。本文将介绍如何指定其他线程运行操作,并提供示例代码。 ## 线程调度 在 RxJava 中,线程的切换可以通过 `Schedu
原创 11月前
60阅读
共同点:都是依赖FuncX(入参,返回值)进行转换(将一个类型依据程序逻辑转换成另一种类型,根据入参和返回值)都能在转换后直接被subscribe区别:map返回的是结果集,flatmap返回的是包含结果集的Observable(返回结果不同)map被订阅时每传递一个事件执行一次onNext方法,flatmap多用于多对多,一对多,再被转化为多个时,一般利用from/just进行一一分发,被订阅时
前言  上一篇我们了解了RxJava的介绍以及通过一个例子学习了RxJava的展现形式,相信大家现在已经对RxJava有一个初步的印象与概念了。本篇我们将更深入的学习RxJava的基本原理以及如何使用RxJava。观察者模式  上一篇有提到RxJava的核心便是扩展的观察者模式,我们先来学习一下观察者模式。   事件:小明按下遥控器开关,空调启动并开始吹风了。按下制冷按键,空调吹出的风变为
当前版本 2.2.19RxJava2 (一)订阅流程源码阅读RxJava2 (二)取消订阅流程 dispose( ) 源码阅读RxJava2 (三)线程切换源码阅读RxJava2 (四)切换UI主线程源码阅读RxJava2 (五)just操作符源码阅读RxJava2 (六)map操作符源码阅读代码示例// 创建被观察者 Observable<String> observable = O
转载 2023-06-29 11:41:17
78阅读
目录 自己动手造一个 RxJava 序言目录1.理解临时任务对象 场景 同步 异步 泛型回调 临时任务对象 组装任务 改装流水线 简单的映射 2.事件的发送与接收RxJava 的发送和接收原理事件发送接收 操作符 just 的实现 3.映射 4.线程调度subscribeOn 的实现observeOn 的实现利用线程池进行调度关闭线程池 结语 4.线程调度终于来到最后一个 part
上次主要讲了最基本的from与just源码,今天我们主要讲的是RxJava中转换符map的使用与实现的原理。 首先我们先上一段超级简单的方法。看下图: 这个函数,我们可以很清楚的知道最后打印出来的内容是“圆圆”,“袁斌”,接下来再来看一个简单的函数: 这个函数,我们通过观察可以知道打印出来的是5和5。 那么RxJava是怎么实现把一个对象通过map函数转换成一个name字符串的,hello转
转载 2023-10-20 15:45:34
89阅读
# RxJava 指定线程 ## 1. 前言 [RxJava]( 是一个用于编写基于事件流和异步操作的响应式编程库。它提供了丰富的操作符和线程调度功能,使得处理异步任务变得更加简单和高效。在 RxJava 中,可以通过指定线程来控制事件的执行顺序和并发性。本文将重点介绍如何在 RxJava指定线程,并提供代码示例加以说明。 ## 2. 使用场景 指定线程在某些场景下非常有用,比如
原创 2024-01-28 05:53:34
70阅读
# RxJava Map操作符详解 在RxJava中,Map操作符是一个非常常用的操作符之一。它允许我们将一个事件转换为另一个事件,并以新的形式传递下去。这个操作符在处理数据流时非常有用,可以对数据进行处理和转换,从而实现更灵活的操作。 ## 什么是Map操作符? Map操作符是RxJava中的一个中间操作符。它接受一个函数作为参数,将源Observable发射的每一个事件都应用这个函数,然
原创 2023-11-13 04:46:23
125阅读
概述RxJava提供了对事件顺序进行变换的支持,这是它的核心功能之一。本节主要学习map()和flatMap()这两个操作符。map()map操作符接受一个Function类型的参数就像这样map(Function<T, R>),然后把这个Function应用到每一个由Observable发射的值上,将发射的值转换成我们希望的值。这种抽象的定义我相信你也听不懂,我们来看一下官方给出的原
转载 2024-06-23 23:36:18
54阅读
  • 1
  • 2
  • 3
  • 4
  • 5