网站首页 > java教程 正文
反应式编程很简单
每个人都可能知道响应式编程,甚至有些人可能会在你的项目中使用。
反应式编程是一种处理异步数据流和特定变化传播的编程模型。
异步 | 数据流 | 传播变化。如果你从定义中理解了这些关键字,那么在项目中使用响应式编程将是轻而易举的事。
异步
当你同步执行某事时,你会等待它完成,然后再继续执行另一个任务。当你异步执行某事时,你可以在它完成之前继续执行另一个任务。
数据流
流是反应式编程的支柱。
随着时间的推移水流
每个人家里可能都有两条管道,一条是纯净水的,一条是咸地下水的,分别用于不同的用途。
假设在上午 9:00,你打开了电机,将纯水从地面提升到水箱,因此纯水流经管道并落入纯水箱。
在 15 分钟内,即早上 9 点 15 分,你已打开另一台电机,通过另一条管道将盐水从地面提升到盐水箱。
通常我们把从一个地方流到另一个地方的水称为溪流。回归到本文章中看数据流定义,那么它将是
数据(水)流是随时间变化的数据(水)序列
在反应式编程中,每个值序列(数据流)都被称为可观察的。这些值序列可以是来自网络服务的数据响应,或者每秒递增 1 的数字。
传播变化
将数据流中发生的变化传播到接收器。
再举一个例子,如果你想净化你的盐水,最好的方法是在水龙头出水之前安装净化器。这个净化器净化水并将变化传播到水龙头。
纯净水流向水龙头
数据流中的转换由 ReactiveX 中的Operators完成,这些转换后的数据被传递给订阅这些更改的观察者。
简单反应方程
反应水流 = 水流 + 净化器 + 传播到水龙头
反应式编程 = Observable + Operators + 传播给观察者
从数据流的创建到观察者收到响应的结束,在反应式编程中可以使用大量的运算符。这些运算符以下列模式工作。
流上的操作
是什么让反应式编程范式流行起来?
在谈论反应式编程时,不得不回顾命令式编程,命令式模型中缺乏自动反应性使得反应式编程模型更受欢迎。
命令式编程执行更改程序状态的语句,即调用更改变量值的函数/表达式。让我们进行一个简单的操作和赋值,a = b + c这意味着a将使用b + c表达式被计算或调用时的结果进行赋值。但是,如果 b和c的值被更改,那么a除非再次调用表达式,否则它不会对 的值产生影响。
让我们看一下通过将变量 和 更改为流来使用反应式编程的a相同b示例c。
反应加法
现在,如果我们将 1 推入 stream b和c,将自动调用加法运算,计算 2 的总和并将其推入 stream a。因此,如果稍后值发生b变化,我们只需将新值推送到流中b,然后这个新值b会自动与之前推送的值相加,c并将结果推送到流中a。
对于反应式编程,我们不调用表达式,而是定义流如何连接在一起并开始将值推送到流上。让管道和Operators处理其余的。
反应式扩展 (ReactiveX)
反应式扩展是一种 API,用于使用可观察对象、运算符、调度程序和观察者实现反应式编程,具有多种语言实现,包括 RxJs、RxJava、RxKotlin、RxPy 和 RxSwift。
- 事半功倍: 高效的API 的构建方式,这意味着在几行代码中使用简单的声明来编写更多功能非常容易。
- 轻松多线程:多线程让应用程序可以更好地利用设备 CPU 内的内核。在 ReactiveX 之前编写并发代码真的很痛苦。但是现在你只需要(以声明方式)声明你希望在其上执行任务的线程,而不是(以强制方式)创建和管理线程。
- 轻松的错误处理:如果你翻开编程历史的页面,对于任何异步调用,我们确实有处理成功响应的方法。但是为了处理意外的异常,我们必须用 try..catch 封装代码。如果你对所有错误场景使用 try..catch,你的代码看起来确实很混乱、不完整且难以处理。Rx 为你提供了一个复杂的错误处理机制,你可以使用它轻松地处理异常。
- 一堆强大的运算符: Rx api 为你提供了使你的编程生活变得轻松的运算符。
Rx 为你提供了一个工具箱,你可以使用它来实施解决方案。但是明智地使用工具箱就在我们手中。
猜你喜欢
- 2024-12-03 Java,JDK11,发布订阅模式,响应式流(Reactive Streams)及背压
- 2024-12-03 有空就来学Hystrix RPC保护的原理,RPC监控之滑动窗口的实现原理
- 2024-12-03 开发Spring Boot应用并部署到Minikube
- 2024-12-03 SpringWeb服务应用响应式Web开发组件:响应式编程和SpringBoot
- 2024-12-03 Reactor响应式编程 第二篇 Spring Boot 整合 Reactor 简单例子
- 2024-12-03 反应式编程之Spring Web-Flux/Project Reactor
- 2024-12-03 即学即用Kotlin - 协程
- 2024-12-03 并发编程:CompletableFuture异步编程详解
- 2024-12-03 终于有人把安卓程序员必学知识点全整理出来了,有如醍醐灌顶
- 2024-12-03 Kotlin Flow的设计精髓:响应式编程在Android中的实践
你 发表评论:
欢迎- 最近发表
-
- JAVA面试|为什么Spring Boot的jar可以直接运行?
- 什么情况,今年面试都不问八股文了??准备了几个月,结果一个都不问。。
- LangChain系列之如何使用LangChain4j构建RAG应用(1)
- JAVA入门教程-第2章 基本编程概念
- FTPC Pnuts语言(ftp mput put)
- 这9个工具库让我的Java开发效率提升了80%
- VS2022配置x86/x64调用32位和64位汇编语言动态库环境
- 别再裸写 parseFrom() 了!这才是 MQTT + Protobuf 消费的正确姿势
- aardio + Java + JavaScript 混合开发快速入门
- 铁打的程序,流水的语言,2018年JAVA编程还想坚挺500年?
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)