响应式编程 - 入门介绍
2022/6/10 1:21:10
本文主要是介绍响应式编程 - 入门介绍,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
概念
与传统编程模型对比
传统编程模型,主要特点是同步阻塞式-Blocking; 而响应式编程(Reactive Programming) 主要特点是异步非阻塞 Non-Blocking。
同步阻塞式参考下面的图:
同步阻塞的方式很好理解,也容易实现,在大部分时候都是不错的选择。但它的问题是当并发量高的时候,会有资源的浪费,遇到性能瓶颈。而我们也希望能够最大程度地利用硬件资源,利用多核CPU提高服务的一个吞吐量,所以有了异步非阻塞的编程模式。
响应式数据流异步非阻塞参考下图:
无论是查询数据库还是Web端过来的请求,都被看做一个一个的事件,而这些事件组成了一个事件流。对于这些事件,我们注册相关的订阅者去响应它,从而从编程的角度上实现异步。
这其中涉及到几个关键字:响应式数据流, 事件驱动, 发布订阅模式。
Java异步非阻塞实现
Java提供了两种方式来实现异步编程:
- Callback 使用回调,例如一个lambda或者一个匿名类作为参数,当异步执行有结果后进行调用
- Future/CompletableFuture 立刻返回一个
Future<T>
对象。
但是这两种方式都有各自的缺陷。
这篇关于响应式编程 - 入门介绍的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-05-15鸿蒙生态设备数量超8亿台
- 2024-05-13TiDB + ES:转转业财系统亿级数据存储优化实践
- 2024-05-09“2024鸿蒙零基础快速实战-仿抖音App开发(ArkTS版)”实战课程已上线
- 2024-05-09聊聊如何通过arthas-tunnel-server来远程管理所有需要arthas监控的应用
- 2024-05-09log4j2这么配就对了
- 2024-05-09nginx修改Content-Type
- 2024-05-09Redis多数据源,看这篇就够了
- 2024-05-09Google Chrome驱动程序 124.0.6367.62(正式版本)去哪下载?
- 2024-05-09有没有大佬知道这种数据应该怎么抓取呀?
- 2024-05-09这种运行结果里的10.100000001,怎么能最快改成10.1?