如何在反应式编程中将对象转换为 Mono

问题描述 投票:0回答:1

我是 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 秒。

java spring-webflux project-reactor
1个回答
0
投票

这是因为

Mono.just()
使用急切计算而不是在订阅时使用。这就是
Mono.just()
不利于阻塞操作的原因。

Mono.just()
的常见用例是当您想要计算静态或预计算值时

你可以尝试

Mono.fromCallable()
。这基本上是惰性计算。程序不会等待
getValue()
函数。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.