Flow.Subscription (Java SE 15 & JDK 15)
Description: declaration: module: java.base, package: java.util.concurrent, class: Flow, interface: Subscription
Keywords: java.util.concurrent.Flow.Subscription interface

Module java.base
Package java.util.concurrent

# Interface Flow.Subscription

Enclosing class:
  Flow

    public static interface Flow.Subscription

Message control linking a `Flow.Publisher` and `Flow.Subscriber`. Subscribers receive items only when requested, and may cancel at any time. The methods in this interface are intended to be invoked only by their Subscribers; usages in other contexts have undefined effects.

- ## Method Summary

  Modifier and Type | Method | Description
  --- | --- | ---
  `void` | `cancel()` | Causes the Subscriber to (eventually) stop receiving messages.
  `void` | `request​(long n)` | Adds the given number `n` of items to the current unfulfilled demand for this subscription.

- ## Method Details

  - ### request

    void request​(long n)
    Adds the given number `n` of items to the current unfulfilled demand for this subscription. If `n` is less than or equal to zero, the Subscriber will receive an `onError` signal with an `IllegalArgumentException` argument. Otherwise, the Subscriber will receive up to `n` additional `onNext` invocations (or fewer if terminated).
    Parameters:
      `n` - the increment of demand; a value of `Long.MAX_VALUE` may be considered as effectively unbounded

  - ### cancel

    void cancel()
    Causes the Subscriber to (eventually) stop receiving messages. Implementation is best-effort -- additional messages may be received after invoking this method. A cancelled subscription need not ever receive an `onComplete` or `onError` signal.