package com.nisum.backpressureStrategy; import java.util.concurrent.Flow; import java.util.concurrent.ForkJoinPool; import java.util.concurrent.SubmissionPublisher; public class BackpressureUsingBufferStrategy { public static void main(String[] args) throws InterruptedException { final int BUFFER = 4; Flow.Publisher backPressurePublisher = new SubmissionPublisher<>(ForkJoinPool.commonPool(), BUFFER); BackpressureSubscriber backpressureSubscriber = new BackpressureSubscriber<>(); backPressurePublisher.subscribe(backpressureSubscriber); for (int i = 0; i < 10; i++) { System.out.println(Thread.currentThread().getName() + " Publishing = " + i); ((SubmissionPublisher) backPressurePublisher).submit(i); } ((SubmissionPublisher) backPressurePublisher).close(); Thread.sleep(10000); } }