如何在 Java 中的某个时间后停止执行 Flux?

How to stop execution a Flux after a certain time in Java?

Flux 中的发布(Streaming)如何在计时器后停止例如1s,如果还有数,就不公布了。 例如1000个数字后,则不会打印。

@Test
public void test() {    
        
        Flux.range(0, 20000)
            // hier 
            .delayElements(Duration.ofMillis(1))
            .parallel(2)
            .runOn(Schedulers.parallel())
            .doOnNext(i -> {
                System.out.println(i);

            })
            .sequential()
            .blockLast();

}

您可以使用 Flux.take(Duration) 使 Flux 在一定时间后完成。

对于您发布的代码和 1 秒的阈值,它看起来像这样:

Flux.range(0, 20000)
    // hier 
    .delayElements(Duration.ofMillis(1))
    .parallel(2)
    .runOn(Schedulers.parallel())
    .doOnNext(i -> {
        System.out.println(i);
    })
    .sequential()
    .take(Duration.ofSeconds(1)) // <--
    .blockLast();