À partir de Java 9, nous pouvons créer des Reactive Streams en introduisant quatre interfaces principales : Publisher, Subscriber, Subscription, Processor et une classe concrète d'implémentation : Le Interface SubmissionPublisher de Publisher. Chaque interface joue un rôle différent, correspondant aux principes de responsivenessflow. Nous pouvons publier les éléments fournis à chaque abonné en utilisant la méthode submit() de la classe SubmissionPublisher .
Syntaxe
<strong>public class SubmissionPublisher<T> extends Object implements Flow.Publisher<T>, AutoCloseable</strong>
SubmissionPublisher Class
Exampleimport java.util.concurrent.Flow.Subscriber; import java.util.concurrent.Flow.Subscription; import java.util.concurrent.SubmissionPublisher; class MySubscriber<T> implements <strong>Subscriber<T></strong> { private <strong>Subscription </strong>subscription; private String name; public MySubscriber(String name) { this.name = name; } <strong>@Override</strong> public void <strong>onComplete()</strong> { System.out.println(name + ": onComplete"); } <strong>@Override</strong> public void <strong>onError</strong>(Throwable t) { System.out.println(name + ": onError"); t.printStackTrace(); } <strong> @Override</strong> public void <strong>onNext</strong>(T msg) { System.out.println(name + ": " + msg.toString() + " received in onNext"); subscription.<strong>request</strong>(1); } <strong>@Override</strong> public void <strong>onSubscribe</strong>(Subscription subscription) { System.out.println(name + ": onSubscribe"); this.subscription = subscription; subscription.<strong>request</strong>(1); } } <strong>// Main class</strong> public class FlowTest { public static void main(String args[]) { <strong>SubmissionPublisher<String></strong> publisher = new <strong>SubmissionPublisher</strong><>(); MySubscriber<String> subscriber = new MySubscriber<>("Mine"); MySubscriber<String> subscriberYours = new MySubscriber<>("Yours"); MySubscriber<String> subscriberHis = new MySubscriber<>("His"); MySubscriber<String> subscriberHers = new MySubscriber<>("Her"); publisher.<strong>subscribe</strong>(subscriber); publisher.<strong>subscribe</strong>(subscriberYours); publisher.<strong>subscribe</strong>(subscriberHis); publisher.<strong>subscribe</strong>(subscriberHers); publisher.<strong>submit</strong>("One"); publisher.<strong>submit</strong>("Two"); publisher.<strong>submit</strong>("Three"); publisher.<strong>submit</strong>("Four"); publisher.<strong>submit</strong>("Five"); try { Thread.sleep(1000); } catch(InterruptedException e) { e.printStackTrace(); } publisher.close(); } }
<strong>Yours: onSubscribe His: onSubscribe Mine: onSubscribe His: One received in onNext Yours: One received in onNext Mine: One received in onNext Yours: Two received in onNext His: Two received in onNext Yours: Three received in onNext Mine: Two received in onNext Yours: Four received in onNext His: Three received in onNext Yours: Five received in onNext Mine: Three received in onNext Her: onSubscribe His: Four received in onNext Her: One received in onNext Mine: Four received in onNext Her: Two received in onNext His: Five received in onNext Her: Three received in onNext Mine: Five received in onNext Her: Four received in onNext Her: Five received in onNext Yours: onComplete His: onComplete Mine: onComplete Her: onComplete</strong>
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!