Flux.create(emitter -> {
for (int i = 0; i <= 20; i++) {
if (emitter.isCancelled()) {
return;
}
System.out.println(Thread.currentThread().getName() + ":Source created " + i);
emitter.next(i);
}
}).doOnNext(s -> {
System.out.println(Thread.currentThread().getName() + ":Source pushed " + s);
}).publishOn(Schedulers.parallel())
.subscribe(custer -> {
try {
Thread.sleep(5000l);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName() + ":consume " + custer);
});
Thread.sleep(360000l);
执行命令: java -Dreactor.bufferSize.small=2 main
执行结果:
main:Source created 0
main:Source pushed 0
main:Source created 1
main:Source pushed 1
main:Source created 2
main:Source pushed 2
main:Source created 3
main:Source pushed 3
main:Source created 4
main:Source pushed 4
main:Source created 5
main:Source pushed 5
main:Source created 6
main:Source pushed 6
main:Source created 7
main:Source pushed 7
main:Source created 8
main:Source pushed 8
main:Source created 9
main:Source pushed 9
main:Source created 10
main:Source pushed 10
main:Source created 11
main:Source pushed 11
main:Source created 12
main:Source pushed 12
main:Source created 13
main:Source pushed 13
main:Source created 14
main:Source pushed 14
main:Source created 15
main:Source pushed 15
main:Source created 16
main:Source created 17
main:Source created 18
main:Source created 19
main:Source created 20
parallel-1:consume 0
parallel-1:consume 1
parallel-1:consume 2
parallel-1:consume 3
parallel-1:consume 4
parallel-1:consume 5
parallel-1:consume 6
parallel-1:consume 7
parallel-1:consume 8
parallel-1:consume 9
parallel-1:consume 10
parallel-1:consume 11
parallel-1:Source pushed 16
parallel-1:Source pushed 17
parallel-1:Source pushed 18
parallel-1:Source pushed 19
parallel-1:Source pushed 20
paralle