Scheduler를 위한 전용 Operator

ParallelFlux의 동작 방식

스크린샷 2024-09-17 오후 1.54.01.png

Flux.fromArray(new Integer[] {1, 3, 5, 7, 9, 11, 13, 15})
                .parallel()
                .subscribe(data -> log.info("parallel: {}", data));
                
// Console
14:12:45.529 [main] INFO com.example.springreactive.section07.ParallelExample01 -- parallel: 1
14:12:45.530 [main] INFO com.example.springreactive.section07.ParallelExample01 -- parallel: 3
14:12:45.530 [main] INFO com.example.springreactive.section07.ParallelExample01 -- parallel: 5
14:12:45.530 [main] INFO com.example.springreactive.section07.ParallelExample01 -- parallel: 7
14:12:45.530 [main] INFO com.example.springreactive.section07.ParallelExample01 -- parallel: 9
14:12:45.530 [main] INFO com.example.springreactive.section07.ParallelExample01 -- parallel: 11
14:12:45.530 [main] INFO com.example.springreactive.section07.ParallelExample01 -- parallel: 13
14:12:45.530 [main] INFO com.example.springreactive.section07.ParallelExample01 -- parallel: 15
Flux.fromArray(new Integer[] {1, 3, 5, 7, 9, 11, 13, 15})
        .parallel()
        .runOn(Schedulers.parallel())
        .subscribe(data -> log.info("parallel: {}", data));
        
// Console
14:11:39.461 [parallel-7] INFO com.example.springreactive.section07.ParallelExample02 -- parallel: 13
14:11:39.461 [parallel-3] INFO com.example.springreactive.section07.ParallelExample02 -- parallel: 5
14:11:39.461 [parallel-4] INFO com.example.springreactive.section07.ParallelExample02 -- parallel: 7
14:11:39.461 [parallel-6] INFO com.example.springreactive.section07.ParallelExample02 -- parallel: 11
14:11:39.461 [parallel-2] INFO com.example.springreactive.section07.ParallelExample02 -- parallel: 3
14:11:39.461 [parallel-1] INFO com.example.springreactive.section07.ParallelExample02 -- parallel: 1
14:11:39.461 [parallel-8] INFO com.example.springreactive.section07.ParallelExample02 -- parallel: 15
14:11:39.461 [parallel-5] INFO com.example.springreactive.section07.ParallelExample02 -- parallel: 9
Flux.fromArray(new Integer[] {1, 3, 5, 7, 9, 11, 13, 15, 17, 19})
        .parallel(4)
        .runOn(Schedulers.parallel())
        .subscribe(data -> log.info("parallel: {}", data));
        
// Console
14:15:46.675 [parallel-2] INFO com.example.springreactive.section07.ParallelExample03 -- parallel: 3
14:15:46.675 [parallel-1] INFO com.example.springreactive.section07.ParallelExample03 -- parallel: 1
14:15:46.675 [parallel-3] INFO com.example.springreactive.section07.ParallelExample03 -- parallel: 5
14:15:46.676 [parallel-2] INFO com.example.springreactive.section07.ParallelExample03 -- parallel: 11
14:15:46.676 [parallel-2] INFO com.example.springreactive.section07.ParallelExample03 -- parallel: 19
14:15:46.675 [parallel-4] INFO com.example.springreactive.section07.ParallelExample03 -- parallel: 7
14:15:46.676 [parallel-1] INFO com.example.springreactive.section07.ParallelExample03 -- parallel: 9
14:15:46.676 [parallel-3] INFO com.example.springreactive.section07.ParallelExample03 -- parallel: 13
14:15:46.677 [parallel-1] INFO com.example.springreactive.section07.ParallelExample03 -- parallel: 17
14:15:46.677 [parallel-4] INFO com.example.springreactive.section07.ParallelExample03 -- parallel: 15

publishOn() & subscribeOn()