gpt4 book ai didi

java - 如何为 Flux.generate 指定调度程序

转载 作者:行者123 更新时间:2023-12-02 09:21:21 32 4
gpt4 key购买 nike

如何为 Flux.generate 指定调度程序?我里面有阻塞调用,我希望能够取消它。到目前为止,我通过以下方式破解了它

Flux<Integer> generate = Flux.generate(....);
Mono<List<Integer>> fut =
Flux.just("ignored")
.publishOn(Schedulers.single())
.flatMap(ignored -> generate)
.timeout(Duration.ofSeconds(2), Flux.empty())

还有更惯用的方式吗?

最佳答案

使用 subscribeOn

        Flux<Integer> g1 = Flux.generate(c -> {
System.out.println(Thread.currentThread());
c.next(1);
});

System.out.println(g1.take(5).collectList().block());

Flux<Integer> g2 = g1.subscribeOn(Schedulers.elastic());

System.out.println(g2.take(5).collectList().block());

输出

Thread[main,5,main]
Thread[main,5,main]
Thread[main,5,main]
Thread[main,5,main]
Thread[main,5,main]
[1, 1, 1, 1, 1]
Thread[elastic-2,5,main]
Thread[elastic-2,5,main]
Thread[elastic-2,5,main]
Thread[elastic-2,5,main]
Thread[elastic-2,5,main]
[1, 1, 1, 1, 1]

关于java - 如何为 Flux.generate 指定调度程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58671703/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com