Bagikan melalui


Flow Kelas

Definisi

Antarmuka yang saling terkait dan metode statis untuk membuat komponen yang dikontrol alur di mana menghasilkan item yang Publisher Publishers dikonsumsi oleh satu atau beberapa Subscriber Subscribers, masing-masing dikelola oleh Subscription Subscription.

[Android.Runtime.Register("java/util/concurrent/Flow", ApiSince=30, DoNotGenerateAcw=true)]
public sealed class Flow : Java.Lang.Object
[<Android.Runtime.Register("java/util/concurrent/Flow", ApiSince=30, DoNotGenerateAcw=true)>]
type Flow = class
    inherit Object
Warisan
Flow
Atribut

Keterangan

Antarmuka yang saling terkait dan metode statis untuk membuat komponen yang dikontrol alur di mana menghasilkan item yang Publisher Publishers dikonsumsi oleh satu atau beberapa Subscriber Subscribers, masing-masing dikelola oleh Subscription Subscription.

Antarmuka ini sesuai dengan spesifikasi reactive-streams . Mereka berlaku dalam pengaturan asinkron bersamaan dan terdistribusi: Semua (tujuh) metode didefinisikan dalam void gaya pesan "satu arah". Komunikasi bergantung pada bentuk kontrol aliran sederhana (metode Subscription#request) yang dapat digunakan untuk menghindari masalah manajemen sumber daya yang mungkin terjadi dalam sistem berbasis "dorong".

<Contoh b>.</b> A Publisher biasanya mendefinisikan implementasinya sendiri Subscription ; membangun satu dalam metode subscribe dan mengeluarkannya ke panggilan Subscriber. Ini menerbitkan item ke pelanggan secara asinkron, biasanya menggunakan Executor. Misalnya, berikut adalah penerbit yang sangat sederhana yang hanya mengeluarkan (ketika diminta) satu TRUE item ke satu pelanggan. Karena pelanggan hanya menerima satu item, kelas ini tidak menggunakan kontrol buffering dan pemesanan yang diperlukan di sebagian besar implementasi.

{@code
            class OneShotPublisher implements Publisher<Boolean> {
              private final ExecutorService executor = ForkJoinPool.commonPool(); // daemon-based
              private boolean subscribed; // true after first subscribe
              public synchronized void subscribe(Subscriber<? super Boolean> subscriber) {
                if (subscribed)
                  subscriber.onError(new IllegalStateException()); // only one allowed
                else {
                  subscribed = true;
                  subscriber.onSubscribe(new OneShotSubscription(subscriber, executor));
                }
              }
              static class OneShotSubscription implements Subscription {
                private final Subscriber<? super Boolean> subscriber;
                private final ExecutorService executor;
                private Future<?> future; // to allow cancellation
                private boolean completed;
                OneShotSubscription(Subscriber<? super Boolean> subscriber,
                                    ExecutorService executor) {
                  this.subscriber = subscriber;
                  this.executor = executor;
                }
                public synchronized void request(long n) {
                  if (!completed) {
                    completed = true;
                    if (n <= 0) {
                      IllegalArgumentException ex = new IllegalArgumentException();
                      executor.execute(() -> subscriber.onError(ex));
                    } else {
                      future = executor.submit(() -> {
                        subscriber.onNext(Boolean.TRUE);
                        subscriber.onComplete();
                      });
                    }
                  }
                }
                public synchronized void cancel() {
                  completed = true;
                  if (future != null) future.cancel(false);
                }
              }
            }}

Mengatur Subscriber bahwa item diminta dan diproses. Item (pemanggilan Subscriber#onNext) tidak dikeluarkan kecuali diminta, tetapi beberapa item dapat diminta. Banyak implementasi Pelanggan dapat mengatur ini dengan gaya contoh berikut, di mana ukuran buffer 1 langkah tunggal, dan ukuran yang lebih besar biasanya memungkinkan pemrosesan tumpang tindih yang lebih efisien dengan komunikasi yang lebih sedikit; misalnya dengan nilai 64, ini menyimpan total permintaan yang luar biasa antara 32 dan 64. Karena pemanggilan metode Pelanggan untuk tertentu Subscription diurutkan secara ketat, tidak perlu metode ini untuk menggunakan kunci atau volatil kecuali Pelanggan mempertahankan beberapa Langganan (dalam hal ini lebih baik untuk menentukan beberapa Pelanggan, masing-masing dengan Langganannya sendiri).

{@code
            class SampleSubscriber<T> implements Subscriber<T> {
              final Consumer<? super T> consumer;
              Subscription subscription;
              final long bufferSize;
              long count;
              SampleSubscriber(long bufferSize, Consumer<? super T> consumer) {
                this.bufferSize = bufferSize;
                this.consumer = consumer;
              }
              public void onSubscribe(Subscription subscription) {
                long initialRequestSize = bufferSize;
                count = bufferSize - bufferSize / 2; // re-request when half consumed
                (this.subscription = subscription).request(initialRequestSize);
              }
              public void onNext(T item) {
                if (--count <= 0)
                  subscription.request(count = bufferSize - bufferSize / 2);
                consumer.accept(item);
              }
              public void onError(Throwable ex) { ex.printStackTrace(); }
              public void onComplete() {}
            }}

Nilai #defaultBufferSize default dapat memberikan titik awal yang berguna untuk memilih ukuran dan kapasitas permintaan dalam komponen Alur berdasarkan tarif, sumber daya, dan penggunaan yang diharapkan. Atau, ketika kontrol alur tidak pernah diperlukan, pelanggan awalnya dapat meminta jumlah item yang tidak terbatas secara efektif, seperti dalam:

{@code
            class UnboundedSubscriber<T> implements Subscriber<T> {
              public void onSubscribe(Subscription subscription) {
                subscription.request(Long.MAX_VALUE); // effectively unbounded
              }
              public void onNext(T item) { use(item); }
              public void onError(Throwable ex) { ex.printStackTrace(); }
              public void onComplete() {}
              void use(T item) { ... }
            }}

Ditambahkan dalam 9.

Dokumentasi Java untuk java.util.concurrent.Flow.

Bagian halaman ini adalah modifikasi berdasarkan pekerjaan yang dibuat dan dibagikan oleh Proyek Sumber Terbuka Android dan digunakan sesuai dengan istilah yang dijelaskan dalam Lisensi Atribusi Creative Commons 2.5.

Properti

Class

Mengembalikan kelas runtime dari .Object

(Diperoleh dari Object)
Handle

Handel ke instans Android yang mendasar.

(Diperoleh dari Object)
JniIdentityHashCode

Antarmuka yang saling terkait dan metode statis untuk membuat komponen yang dikontrol alur di mana menghasilkan item yang Publisher Publishers dikonsumsi oleh satu atau beberapa Subscriber Subscribers, masing-masing dikelola oleh Subscription Subscription.

(Diperoleh dari Object)
JniPeerMembers

Antarmuka yang saling terkait dan metode statis untuk membuat komponen yang dikontrol alur di mana menghasilkan item yang Publisher Publishers dikonsumsi oleh satu atau beberapa Subscriber Subscribers, masing-masing dikelola oleh Subscription Subscription.

PeerReference

Antarmuka yang saling terkait dan metode statis untuk membuat komponen yang dikontrol alur di mana menghasilkan item yang Publisher Publishers dikonsumsi oleh satu atau beberapa Subscriber Subscribers, masing-masing dikelola oleh Subscription Subscription.

(Diperoleh dari Object)
ThresholdClass

API ini mendukung infrastruktur Mono untuk Android dan tidak dimaksudkan untuk digunakan langsung dari kode Anda.

(Diperoleh dari Object)
ThresholdType

API ini mendukung infrastruktur Mono untuk Android dan tidak dimaksudkan untuk digunakan langsung dari kode Anda.

(Diperoleh dari Object)

Metode

Clone()

Membuat dan mengembalikan salinan objek ini.

(Diperoleh dari Object)
DefaultBufferSize()

Mengembalikan nilai default untuk buffering Penerbit atau Pelanggan, yang dapat digunakan tanpa adanya batasan lain.

Dispose()

Antarmuka yang saling terkait dan metode statis untuk membuat komponen yang dikontrol alur di mana menghasilkan item yang Publisher Publishers dikonsumsi oleh satu atau beberapa Subscriber Subscribers, masing-masing dikelola oleh Subscription Subscription.

(Diperoleh dari Object)
Dispose(Boolean)

Antarmuka yang saling terkait dan metode statis untuk membuat komponen yang dikontrol alur di mana menghasilkan item yang Publisher Publishers dikonsumsi oleh satu atau beberapa Subscriber Subscribers, masing-masing dikelola oleh Subscription Subscription.

(Diperoleh dari Object)
Equals(Object)

Menunjukkan apakah beberapa objek lain "sama dengan" yang satu ini.

(Diperoleh dari Object)
GetHashCode()

Mengembalikan nilai kode hash untuk objek .

(Diperoleh dari Object)
JavaFinalize()

Dipanggil oleh pengumpul sampah pada objek ketika pengumpulan sampah menentukan bahwa tidak ada lagi referensi ke objek.

(Diperoleh dari Object)
Notify()

Membangunkan satu utas yang menunggu monitor objek ini.

(Diperoleh dari Object)
NotifyAll()

Membangunkan semua utas yang menunggu monitor objek ini.

(Diperoleh dari Object)
SetHandle(IntPtr, JniHandleOwnership)

Handle Mengatur properti.

(Diperoleh dari Object)
ToArray<T>()

Antarmuka yang saling terkait dan metode statis untuk membuat komponen yang dikontrol alur di mana menghasilkan item yang Publisher Publishers dikonsumsi oleh satu atau beberapa Subscriber Subscribers, masing-masing dikelola oleh Subscription Subscription.

(Diperoleh dari Object)
ToString()

Mengembalikan representasi string objek.

(Diperoleh dari Object)
UnregisterFromRuntime()

Antarmuka yang saling terkait dan metode statis untuk membuat komponen yang dikontrol alur di mana menghasilkan item yang Publisher Publishers dikonsumsi oleh satu atau beberapa Subscriber Subscribers, masing-masing dikelola oleh Subscription Subscription.

(Diperoleh dari Object)
Wait()

Menyebabkan utas saat ini menunggu sampai terbangun, biasanya dengan <diberitahu></em> atau <em>terganggu</em>.

(Diperoleh dari Object)
Wait(Int64, Int32)

Menyebabkan utas saat ini menunggu sampai terbangun, biasanya dengan <>diberitahu</em> atau <em>terganggu</em>, atau sampai sejumlah real time telah berlalu.

(Diperoleh dari Object)
Wait(Int64)

Menyebabkan utas saat ini menunggu sampai terbangun, biasanya dengan <>diberitahu</em> atau <em>terganggu</em>, atau sampai sejumlah real time telah berlalu.

(Diperoleh dari Object)

Implementasi Antarmuka Eksplisit

IJavaPeerable.Disposed()

Antarmuka yang saling terkait dan metode statis untuk membuat komponen yang dikontrol alur di mana menghasilkan item yang Publisher Publishers dikonsumsi oleh satu atau beberapa Subscriber Subscribers, masing-masing dikelola oleh Subscription Subscription.

(Diperoleh dari Object)
IJavaPeerable.DisposeUnlessReferenced()

Antarmuka yang saling terkait dan metode statis untuk membuat komponen yang dikontrol alur di mana menghasilkan item yang Publisher Publishers dikonsumsi oleh satu atau beberapa Subscriber Subscribers, masing-masing dikelola oleh Subscription Subscription.

(Diperoleh dari Object)
IJavaPeerable.Finalized()

Antarmuka yang saling terkait dan metode statis untuk membuat komponen yang dikontrol alur di mana menghasilkan item yang Publisher Publishers dikonsumsi oleh satu atau beberapa Subscriber Subscribers, masing-masing dikelola oleh Subscription Subscription.

(Diperoleh dari Object)
IJavaPeerable.JniManagedPeerState

Antarmuka yang saling terkait dan metode statis untuk membuat komponen yang dikontrol alur di mana menghasilkan item yang Publisher Publishers dikonsumsi oleh satu atau beberapa Subscriber Subscribers, masing-masing dikelola oleh Subscription Subscription.

(Diperoleh dari Object)
IJavaPeerable.SetJniIdentityHashCode(Int32)

Antarmuka yang saling terkait dan metode statis untuk membuat komponen yang dikontrol alur di mana menghasilkan item yang Publisher Publishers dikonsumsi oleh satu atau beberapa Subscriber Subscribers, masing-masing dikelola oleh Subscription Subscription.

(Diperoleh dari Object)
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates)

Antarmuka yang saling terkait dan metode statis untuk membuat komponen yang dikontrol alur di mana menghasilkan item yang Publisher Publishers dikonsumsi oleh satu atau beberapa Subscriber Subscribers, masing-masing dikelola oleh Subscription Subscription.

(Diperoleh dari Object)
IJavaPeerable.SetPeerReference(JniObjectReference)

Antarmuka yang saling terkait dan metode statis untuk membuat komponen yang dikontrol alur di mana menghasilkan item yang Publisher Publishers dikonsumsi oleh satu atau beberapa Subscriber Subscribers, masing-masing dikelola oleh Subscription Subscription.

(Diperoleh dari Object)

Metode Ekstensi

JavaCast<TResult>(IJavaObject)

Melakukan konversi jenis yang diperiksa runtime Bahasa Umum Android.

JavaCast<TResult>(IJavaObject)

Antarmuka yang saling terkait dan metode statis untuk membuat komponen yang dikontrol alur di mana menghasilkan item yang Publisher Publishers dikonsumsi oleh satu atau beberapa Subscriber Subscribers, masing-masing dikelola oleh Subscription Subscription.

GetJniTypeName(IJavaPeerable)

Antarmuka yang saling terkait dan metode statis untuk membuat komponen yang dikontrol alur di mana menghasilkan item yang Publisher Publishers dikonsumsi oleh satu atau beberapa Subscriber Subscribers, masing-masing dikelola oleh Subscription Subscription.

Berlaku untuk