在后台进程运行时执行当前流程 - 单反应式编程
Posted
技术标签:
【中文标题】在后台进程运行时执行当前流程 - 单反应式编程【英文标题】:Execute the current flow while background process is running - mono reactive programming 【发布时间】:2021-05-07 19:54:05 【问题描述】:我正在尝试运行 main 方法,其中 main 方法调用另一个方法(Bmethod),我需要在后台运行该方法,但我需要立即响应 main 方法,而无需等待 Bmethod 响应。 我需要使用 java 响应式代码(webflux)。
public static void main(String[] args)
String abc= Mono.just(Bmethod()).block();
System.out.println("AAAAAAA");
public static String Bmethod()
System.out.println("BBBBBBBB");
return "AACALL";
我想打印 AAAAAAA 然后只打印 BBBBBBBB 而不等待 Bmethod 响应。如何使用响应式单声道 Java 实现。
【问题讨论】:
我认为您需要更详细地解释您真正想要做什么。因为这可以通过很多很多不同的方式来解决。例如,abc
的用途是什么,并且您不能在反应式 non-blocking
应用程序中调用 block
。
【参考方案1】:
您必须switch your call to Bmethod
to a supplier 并将block
呼叫移至末尾。
Mono<String> abcMono = Mono.fromSupplier(() -> Bmethod());
System.out.println("AAAAAAA");
String abc = abcMono.block();
注意:
-
对
block
的调用定义了您真正需要来自Mono
的值的时刻,因此它不应该在开头。
与供应商解决方案相比,您对 just
的想法会强制 java 在将参数提供给函数之前对其进行计算,从而使包装无用
【讨论】:
以上是关于在后台进程运行时执行当前流程 - 单反应式编程的主要内容,如果未能解决你的问题,请参考以下文章