1. Reactor是什么
- Reactor 是一个基于Reactive Streams规范的响应式编程框架。它提供了一组用于构建异步、事件驱动、响应式应用程序的工具和库。Reactor 的核心是
Flux
(表示一个包含零到多个元素的异步序列)和Mono
表示一个包含零或一个元素的异步序列)。 - Reactor 通过提供响应式的操作符,如
map
、filter
、flatMap
等,使得开发者能够方便地进行数据流的转换和处理。
2. Reactor、Callback、CompletableFuture三种形式异步编码对比
- 编码简洁程度
Reactor
最优 Reactor
线程利用率最高(因实现了Reactive Streams规范
,拥有背压+事件驱动特性,此处暂不展开)
代码如下:
pom依赖
<dependencyManagement> <dependencies> <dependency> <groupId>io.projectreactor</groupId> <artifactId>reactor-bom</artifactId> <version>2023.0.0</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <dependencies> <dependency> <groupId>io.projectreactor</groupId> <artifactId>reactor-core</artifactId> </dependency> </dependencies>
Callback回调地狱
interface FirstCallback {
void onCompleteFirst(String result);
void onErrorFirst(Exception e);
}
interface SecondCallback {
void onCompleteSecond(String result);
void onErrorSecond(Exception e);
}
interface ThirdCallback {
void onCompleteThird(String result);
void onErrorThird(Exception e);
}
class AsyncOperations {
static void firstOperation(FirstCallback firstCallback) {
new Thread(() -> {
try {
// 模拟异步操作
Thread.sleep(2000);
// 操作完成后调用回调函数
firstCallback.onCompleteFirst("First operation completed");