我是 java 响应式编程的新手。我尝试以异步方式执行以下程序。我的意思是主线程必须完成其执行而无需等待 Mono 对象。但是主线程被阻塞,直到订阅方法完成。有人可以让这个程序异步吗?
public static void main(String[] args) {
Mono.just(getValue()).subscribe(value -> System.out.println(value));
}
public static int getValue() {
try {
Thread.sleep(10000);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
return 10;
}
我尝试异步执行该程序,并期望该程序不会等待 Mono subcribe 方法不应执行并立即终止不应等待 10 秒。
这是因为
Mono.just()
使用急切计算而不是在订阅时使用。这就是Mono.just()
不利于阻塞操作的原因。
Mono.just()
的常见用例是当您想要计算静态或预计算值时
你可以尝试
Mono.fromCallable()
。这基本上是惰性计算。程序不会等待 getValue()
函数。