我一直在试验Project Reactor和反应性流。使用subscribeOn使流在其他线程上运行时遇到问题。将我的代码保存在主程序中,我需要主线程块,直到流完成为止,因此我做了如下操作:

        Flux.just(1, 2, 3, 4)
                .log()
                .subscribeOn(Schedulers.parallel())
                .subscribe((i) -> {
                   // some operation
                });

        try {
            Thread.sleep(20000L);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }

        System.out.println("Finished");


然后,我注意到有一个blockLast()方法可以进行阻止。但是我不能同时使用subscribe和blockLast,因为它们不返回Flux

有没有优美的方法可以做到这一点?

最佳答案

所有的块方法都代表您进行订阅。您可以将本应放入订阅Lambda中的代码移动到等效的doOn *方法中

07-24 19:34