首页 > 解决方案 > 在后台进程运行时执行当前流程 - 单反应式编程

问题描述

我正在尝试运行 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 实现。

标签: javaspring-bootjava-8reactive-programmingspring-webflux

解决方案


您必须将呼叫切换Bmethod到供应商并将block呼叫移至末尾。

Mono<String> abcMono = Mono.fromSupplier(() -> Bmethod());
System.out.println("AAAAAAA");
String abc = abcMono.block();

注意:

  1. 调用block定义了你真正需要你的值的时刻Mono,所以它不应该在开头。
  2. 与供应商解决方案相比,您的想法just强制 java 在将参数提供给函数之前计算参数,从而使包装无用

推荐阅读