FluxCreate与FluxArray一样implements SourceProducer,都是最底层的生产者(非中间层)。与FluxArray最明显的不同是,FluxCreate实现背压backpressure的功能(背压是响应式编程的一个亮点)。
调用方式
Flux.create(sink -> {
//向下游发布元素
for (int i = 0; i <= 100; i++) {
sink.next(i);
}
//结束发布元素
sink.complete();
})
.subscribe(System.out :: println);
源码方法
final class FluxCreate<T> extends Flux<T> implements SourceProducer<T> {
enum CreateMode {
PUSH_ONLY, PUSH_PULL
}
//这个source后面会被封装成sink(发射器),主要用来生产元素
final Consumer<? super FluxSink<T>> source;
//背压策略,本节先不详解
final OverflowStrategy backpressure;
//创建模式,本节先不详解
final CreateMode createMode;
FluxCreate(Consumer<? super FluxSink<T>> source,
FluxSink.OverflowStrategy backpressure,
CreateMode createMode) {
this.source = O