package com.nisum.basicFlowExample; import java.util.concurrent.ExecutionException; import java.util.concurrent.SubmissionPublisher; public class Sample { public static void main(String[] args) throws InterruptedException, ExecutionException { SubmissionPublisher<Integer> feed=new SubmissionPublisher<>(); MessageSubscriber<Integer> messageSubscriber=new MessageSubscriber(); PrintSubscriber<Integer> printSubscriber=new PrintSubscriber(); feed.subscribe(messageSubscriber); feed.subscribe(printSubscriber); for (int i = 0; i < 10; i++) { if(i==5) { System.out.println("Inside Exception block"); feed.closeExceptionally(new RuntimeException("MyException")); break; } else{ System.out.println("Inside normal block"); feed.submit(i); } sleep(1000); } feed.close(); } private static Boolean sleep(int ms) { try{ Thread.sleep(ms); return true; } catch(InterruptedException e){ return false; } } }