在后台进程运行时执行当前流程 - 单反应式编程

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 在将参数提供给函数之前对其进行计算,从而使包装无用

【讨论】:

以上是关于在后台进程运行时执行当前流程 - 单反应式编程的主要内容,如果未能解决你的问题,请参考以下文章

bash的变量

即使设备在本机反应中重新启动,如何运行后台任务?

WinPhone 应用程序事件对应用程序进程终止作出反应

当应用程序处于后台时,在反应本机后台计时器 setInterval 中调用 await

程序编译流程

具有反应原生和裸工作流博览会的后台应用程序