Flow API (java.util.concurrent.Flow) a été introduite dans Java 9. Cela permet de comprendre les différentes manières dont les interfaces Publisher et SSubscriber interagissent pour effectuer les actions souhaitées.
Flow API se compose d'interfaces éditeur, abonné, abonnement et processeur, qui peuvent être basées sur des spécifications de flux réactives.
Dans l'exemple ci-dessous, nous pouvons implémenter l'API Flow en utilisant l'interface éditeur-abonné.
import java.util.concurrent.Flow.Publisher; import java.util.concurrent.Flow.Subscriber; import java.util.concurrent.Flow.Subscription; public class FlowAPITest { public static void main(String args[]) { <strong>Publisher<Integer></strong> publisherSync = new <strong>Publisher<Integer></strong>() { <strong>// Create publisher</strong> <strong>@Override</strong> public void <strong>subscribe</strong>(Subscriber<? super Integer><!--? super Integer--> subscriber) { for(int i = 0; i < 10; i++) { System.out.println(Thread.currentThread().getName() + " | Publishing = " + i); subscriber.<strong>onNext</strong>(i); } subscriber.<strong>onComplete</strong>(); } }; <strong>Subscriber<Integer></strong> subscriberSync = new <strong>Subscriber<Integer></strong>() { <strong>// Create subscriber</strong> <strong>@Override</strong> public void <strong>onSubscribe</strong>(Subscription subscription) { } <strong>@Override</strong> public void <strong>onNext</strong>(Integer item) { System.out.println(Thread.currentThread().getName() + " | Received = " + item); try { Thread.sleep(100); } catch(InterruptedException e) { e.printStackTrace(); } } <strong>@Override</strong> public void <strong>onError</strong>(Throwable throwable) { } <strong>@Override</strong> public void <strong>onComplete()</strong> { } }; publisherSync.<strong>subscribe</strong>(subscriberSync); } }
<strong>main | Publishing = 0 main | Received = 0 main | Publishing = 1 main | Received = 1 main | Publishing = 2 main | Received = 2 main | Publishing = 3 main | Received = 3 main | Publishing = 4 main | Received = 4 main | Publishing = 5 main | Received = 5 main | Publishing = 6 main | Received = 6 main | Publishing = 7 main | Received = 7 main | Publishing = 8 main | Received = 8 main | Publishing = 9 main | Received = 9</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!