> Java > java지도 시간 > 본문

Java 9에서 구독자 인터페이스를 어떻게 구현합니까?

WBOY
풀어 주다: 2023-09-04 13:33:07
앞으로
734명이 탐색했습니다.

在Java 9中,我们如何实现Subscriber接口?

Java 9 Publisher 를 구현하는 Publisher, Subscriber, SubscriptionSubmissionPublisher 인터페이스를 도입하여 반응형 스트림 생성을 지원합니다. 인터페이스 클래스. 각 인터페이스는 Reactive Streaming 원칙에 따라 서로 다른 역할을 수행할 수 있습니다.

Subscriber 인터페이스를 사용하여 publisher에서 게시한 데이터를 구독할 수 있습니다. Subscriber 인터페이스를 구현하고 추상 메서드에 대한 구현을 제공해야 합니다.

Flow.Subscriber 인터페이스의 메서드:

  • onComplete(): 이 메서드는 게시자 개체가 해당 역할을 완료할 때 호출됩니다.
  • onError(): Publisher에 문제가 있을 때 호출되어 Subscriber에게 알립니다.
  • onNext(): 이 메소드는 게시자가 모든 구독자에게 알리기 위한 새로운 정보를 가지고 있을 때 호출됩니다.
  • onSubscribe(): 이 메소드는 게시자가 구독자를 추가할 때 호출됩니다.

import java.util.concurrent.Flow;
import java.util.concurrent.SubmissionPublisher;
import java.util.stream.IntStream;

public class SubscriberImplTest {
   public static class Subscriber implements <strong>Flow.Subscriber<Integer></strong> {
      private <strong>Flow.Subscription</strong> subscription;
      private boolean isDone;
      
     <strong> @Override</strong>
      public void <strong>onSubscribe</strong>(Flow.Subscription subscription) {
         System.out.println("Subscribed");
         this.subscription = subscription;
         this.subscription.request(1);
      }
      <strong>@Override</strong>
      public void <strong>onNext</strong>(Integer item) {
         System.out.println("Processing " + item);
         this.subscription.request(1);
      }
      <strong>@Override</strong>
      public void <strong>onError</strong>(Throwable throwable) {
         throwable.printStackTrace();
      }
      <strong>@Override</strong>
      public void <strong>onComplete()</strong> {
         System.out.println("Processing done");
         isDone = true;
      }
   }
   public static void main(String args[]) throws InterruptedException {
      <strong>SubmissionPublisher<Integer></strong> publisher = new <strong>SubmissionPublisher<></strong><strong>()</strong>;
      <strong>Subscriber </strong>subscriber = new <strong>Subscriber()</strong>;
      publisher.subscribe(subscriber);
      <strong>IntStream</strong> intData = <strong>IntStream.rangeClosed</strong>(1, 10);
      intData.forEach(<strong>publisher::submit</strong>);
      publisher.<strong>close()</strong>;
      while(!subscriber.isDone) {
         Thread.sleep(10);
      }
      System.out.println("Done");
   }
}
로그인 후 복사

출력

<strong>Subscribed
Processing 1
Processing 2
Processing 3
Processing 4
Processing 5
Processing 6
Processing 7
Processing 8
Processing 9
Processing 10
Processing done
Done</strong>
로그인 후 복사

위 내용은 Java 9에서 구독자 인터페이스를 어떻게 구현합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:tutorialspoint.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!