Computer >> Máy Tính >  >> Lập trình >> Java

Làm cách nào để chúng tôi có thể triển khai API luồng bằng cách sử dụng Nhà xuất bản-Người đăng ký trong Java 9?


API luồng (java.util.concurrent.Flow) đã giới thiệu trong Java 9 . Nó giúp hiểu các cách khác nhau mà Nhà xuất bản S người đăng ký các giao diện tương tác để thực hiện các hoạt động mong muốn.

AP luồng Tôi bao gồm Nhà xuất bản, Người đăng ký, Người đăng ký, Bộ xử lý giao diện, có thể dựa trên đặc tả luồng phản ứng.

Trong ví dụ dưới đây, chúng tôi có thể triển khai API luồng bằng cách sử dụng giao diện Nhà xuất bản-Người đăng ký.

Ví dụ

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[]) {
      Publisher<Integer> publisherSync = new Publisher<Integer>() {   // Create publisher
         @Override
         public void subscribe(Subscriber<? super Integer> subscriber) {
            for(int i = 0; i < 10; i++) {
               System.out.println(Thread.currentThread().getName() + " | Publishing = " + i);
               subscriber.onNext(i);
            }
            subscriber.onComplete();
         }
      };
      Subscriber<Integer> subscriberSync = new Subscriber<Integer>() {   // Create subscriber
         @Override
         public void onSubscribe(Subscription subscription) {
         }
         @Override
         public void onNext(Integer item) {
            System.out.println(Thread.currentThread().getName() + " | Received = " + item);
            try {
               Thread.sleep(100);
            } catch(InterruptedException e) {
               e.printStackTrace();
            }
         }
         @Override
         public void onError(Throwable throwable) {
         }
         @Override
         public void onComplete() {
         }
      };
      publisherSync.subscribe(subscriberSync);
   }
}

Đầu ra

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