如何指定調度程序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())還有更慣用的方式嗎?
1 回答

德瑪西亞99
TA貢獻1770條經驗 獲得超3個贊
使用訂閱
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]
添加回答
舉報
0/150
提交
取消