package com.nisum.sampleCode;

import com.nisum.subscribers.MagazineSubscriber;
import com.nisum.subscribers.PrintSubscriber;
import lombok.extern.slf4j.Slf4j;

import java.util.concurrent.ExecutionException;
import java.util.concurrent.SubmissionPublisher;


@Slf4j
public class Sample {
    public static void main(String[] args) throws InterruptedException, ExecutionException {

        SubmissionPublisher<Integer> feed=new SubmissionPublisher<>();
        MagazineSubscriber<Integer> magazineSubscriber=new MagazineSubscriber<>();
        PrintSubscriber<Integer> printSubscriber=new PrintSubscriber();
        feed.subscribe(magazineSubscriber);
        feed.subscribe(printSubscriber);
        for (int i = 0; i < 10; i++) {
            log.info(Thread.currentThread().getName() + " Publishing = " + i);
            feed.submit(i);
            Thread.sleep(1000);
        }
        feed.close();
    }

}