A subscription은 data의 교환을 중재할 목적으로 게시자와 구독자가 공유할 수 있습니다. 그렇기 때문에 subscribe() 메서드는 생성된 구독을 반환하지 않고 대신 void를 반환합니다. 구독은 onSubscribe() 메소드 콜백을 통해서만 구독자에게 전달됩니다. 구독 인터페이스에는 request() 및 cancel()이라는 두 가지 메서드가 포함되어 있습니다.
Syntax
<strong>public interface Subscription {
public void request(long n);
public void cancel();
}</strong>
로그인 후 복사
구독 인터페이스 규칙:
-
Subscription.request() 및 Subscription.cancel() 메소드는 구독자 컨텍스트 내에서만 호출할 수 있습니다.
- 구독은 구독자가 Subscription.request() 메서드 onNext() 또는 onSubscribe() 메서드를 내부에서 동기적으로 호출할 수 있도록 허용해야 합니다.
-
Subscription.request() 메서드는 publishers와 subscribers 간의 가능한 동기 재귀에 대한 상한을 설정해야 합니다.
-
Subscription.request()메소드는
-
Subscription.cancel()을 반환하여 호출자의 응답을 존중해야 하며 적시에 반환하여 호출자의 응답을 존중해야 하며 스레드로부터 안전해야 합니다 strong> .
- 구독이 취소되지 않는 동안 Subscription.request(long n) 메소드는 해당 구독자에 대해 생성될 추가 요소를 지정된 수만큼 등록해야 합니다.
- 구독이 취소되지 않더라도 Subscription.request(long n) 메소드는 onError() 메소드를 호출하고 매개변수가 IllegalArgumentException 을 발생시켜야 합니다.
- 구독이 취소되지 않은 경우 Subscription.request(long n) 메서드는 이 구독자 또는 다른 구독자에 대해 onNext() 메서드를 동기적으로 호출할 수 있습니다.
- 구독이 취소되지 않은 경우 Subscription.request(long n) 메서드는 onComplete() 또는 onError() 메서드를 동기적으로 호출할 수 있습니다.
- 구독이 취소되지 않은 동안 Subscription.cancel() 메소드는 게시자에게 구독자에 대한 신호 전달을 중지하도록 요청해야 합니다. 이 작업은 구독에 즉시 영향을 미치지 않습니다.
- 구독이 취소되지 않은 동안 Subscription.cancel() 메소드는 게시자에게 해당 구독에 대한 모든 참조를 삭제하도록 요청해야 합니다.
- Subscription.cancel() 및 Subscription.request() 메서드를 호출하면 정상적으로 반환되어야 합니다.
-
> 구독 은 요청 통화 수를 무제한으로 지원해야 하며 최대 2^63-1 요구 사항을 지원해야 합니다. 수요가 2^63-1보다 크거나 같으면 게시자는 유효무제한을 고려할 수 있습니다.
위 내용은 Java 9의 구독 인터페이스 규칙은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!