小编Rom*_*n Y的帖子

为什么在 Flux 完成发射元素后,Reactor 项目中的 Schedulers.newParallel() 不停止运行?

我有一个 s 原语FluxString并在main()方法中运行此代码。

    package com.example;
    
    import reactor.core.publisher.Flux;
    import reactor.core.scheduler.Schedulers;
    import reactor.util.Logger;
    import reactor.util.Loggers;
    
    import java.util.Arrays;
    import java.util.List;
    
    public class Parallel {
    
        private static final Logger log = Loggers.getLogger(Parallel.class.getName());
    
        private static List<String> COLORS = Arrays.asList("red", "white", "blue");
    
        public static void main(String[] args) throws InterruptedException {
    
            Flux<String> flux = Flux.fromIterable(COLORS);
    
            flux
                    .log()
                    .map(String::toUpperCase)
                    .subscribeOn(Schedulers.newParallel("sub"))
                    .publishOn(Schedulers.newParallel("pub", 1))
                    .subscribe(value -> {
                        log.info("==============Consumed: " + value);
                    });
        }
    }
Run Code Online (Sandbox Code Playgroud)

如果您尝试运行此代码,应用程序永远不会停止运行,您需要手动停止它。如果我替换.newParallel().parallel()一切正常,并且应用程序正常完成。

为什么它无法自行完成运行?为什么会挂?这种行为的原因是什么?

如果您将此代码作为 JUnit 测试运行,它可以正常工作并且不会挂起。

java scheduler flux project-reactor

4
推荐指数
1
解决办法
691
查看次数

标签 统计

flux ×1

java ×1

project-reactor ×1

scheduler ×1