import java.util.concurrent.Flow.*; public class ReactiveProgrammingExample { public static void main(String[] args) { Publisher<String> publisher = new SimplePublisher(); Subscriber<String> subscriber = new SimpleSubscriber(); publisher.subscribe(subscriber); publisher.submit("Hello"); publisher.submit("World"); publisher.submit("!"); publisher.complete(); } static class SimplePublisher implements Publisher<String> { private Subscriber<? super String> subscriber; @Override public void subscribe(Subscriber<? super String> subscriber) { this.subscriber = subscriber; this.subscriber.onSubscribe(new Subscription() { @Override public void request(long n) { publishEvents(); } @Override public void cancel() { } }); } private void publishEvents() { subscriber.onNext("Hello"); subscriber.onNext("World"); subscriber.onNext("!"); subscriber.onComplete(); } public void submit(String event) { } public void complete() { } } static class SimpleSubscriber implements Subscriber<String> { private Subscription subscription; @Override public void onSubscribe(Subscription subscription) { this.subscription = subscription; this.subscription.request(1); } @Override public void onNext(String item) { System.out.println("Received: " + item); this.subscription.request(1); } @Override public void onError(Throwable throwable) { } @Override public void onComplete() { } } }


上一篇:
下一篇:
切换中文