Reactor execution model 3 - parallelism
Parallelism using parallel() and runOn() operator
public class PararellTest {
@Test
void pararellTest_1() {
Flux<Integer> numbers = Flux.range(1, 10)
.map(this::stop1Second)
.log();
StepVerifier.create(numbers)
.expectNextCount(10)
.verifyComplete();
}
@Test
void pararellTest_2() {
Flux<Integer> numbers = Flux.range(1, 10)
.publishOn(Schedulers.parallel())
.map(this::stop1Second)
.log();
StepVerifier.create(numbers)
.expectNextCount(10)
.verifyComplete();
}
@Test
void pararellTest_3() {
int availableProcessors = Runtime.getRuntime().availableProcessors();
System.out.println("availableProcessors : " + availableProcessors);
ParallelFlux<Integer> numbers = Flux.range(1, 10)
.parallel()
.runOn(Schedulers.parallel())
.map(this::stop1Second)
.log();
StepVerifier.create(numbers)
.expectNextCount(10)
.verifyComplete();
}
private Integer stop1Second(int value) {
try {
System.out.println("current value : " + value);
Thread.sleep(1000L);
return value;
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
}
}
Parallelism using flatMap() operator
Last updated