Bagikan melalui


IBlockingQueue Antarmuka

Definisi

Queue Yang juga mendukung operasi yang menunggu antrean menjadi tidak kosong saat mengambil elemen, dan menunggu ruang tersedia dalam antrean saat menyimpan elemen.

[Android.Runtime.Register("java/util/concurrent/BlockingQueue", "", "Java.Util.Concurrent.IBlockingQueueInvoker")]
[Java.Interop.JavaTypeParameters(new System.String[] { "E" })]
public interface IBlockingQueue : IDisposable, Java.Interop.IJavaPeerable, Java.Util.IQueue
[<Android.Runtime.Register("java/util/concurrent/BlockingQueue", "", "Java.Util.Concurrent.IBlockingQueueInvoker")>]
[<Java.Interop.JavaTypeParameters(new System.String[] { "E" })>]
type IBlockingQueue = interface
    interface IQueue
    interface ICollection
    interface IIterable
    interface IJavaObject
    interface IDisposable
    interface IJavaPeerable
Turunan
Atribut
Penerapan

Keterangan

Queue Yang juga mendukung operasi yang menunggu antrean menjadi tidak kosong saat mengambil elemen, dan menunggu ruang tersedia dalam antrean saat menyimpan elemen.

BlockingQueue metode datang dalam empat bentuk, dengan berbagai cara penanganan operasi yang tidak dapat segera dipenuhi, tetapi mungkin terpenuhi pada beberapa titik di masa depan: satu melempar pengecualian, yang kedua mengembalikan nilai khusus (baik null atau false, tergantung pada operasi), yang ketiga memblokir utas saat ini tanpa batas waktu sampai operasi dapat berhasil, dan blok keempat hanya untuk batas waktu maksimum tertentu sebelum menyerah. Metode ini dirangkum dalam tabel berikut:

<table class="plain"><caption>Summary of BlockingQueue methods</caption><tr><td></td><th scope="col" style="font-weight:normal; font-style:italic">Melempar pengecualian</th th<>scope="col" style="font-weight:normal; font-style:italic">Special value</th th<>scope="col" style="font-weight:normal; font-style:italic">Blocks</th><th scope="col" style="font-weight:normal; font-style:italic">Times out</th<>/tr tr<><>th scope="row" style="text-align:left">Insert</th><td><#add(Object) add(e)/td><<>#offer(Object) offer(e)/td td>><<#put(Object) put(e)/td><><#offer(Object, long, TimeUnit) offer(e, time, unit)/td<>/tr tr<<>>th scope="row" style="text-align:left">Remove</th><td#remove() remove()></td<><>#poll() poll()/td/td><td><#take() take()/td><td><#poll(long, TimeUnit) poll(time, unit)/td></tr tr>><<th scope="row" style="text-align:left">Examine</th><td<#element() element()>/td><td#peek() peek()<>/td td><style="font-style: italic">not applicable</td td><style="font-style: italic">not applicable</td<>/table><>

BlockingQueue Tidak menerima null elemen. Implementasi melempar NullPointerException pada upaya ke add, put atau offernull. null digunakan sebagai nilai sentinel untuk menunjukkan kegagalan poll operasi.

BlockingQueue Mungkin kapasitas terikat. Pada waktu tertentu mungkin memiliki remainingCapacity di luar yang tidak ada elemen tambahan yang dapat put tanpa memblokir. Tanpa BlockingQueue batasan kapasitas intrinsik selalu melaporkan kapasitas yang tersisa dari Integer.MAX_VALUE.

BlockingQueue implementasi dirancang untuk digunakan terutama untuk antrean produsen-konsumen, tetapi juga mendukung Collection antarmuka. Jadi, misalnya, dimungkinkan untuk menghapus elemen arbitrer dari antrean menggunakan remove(x). Namun, operasi tersebut umumnya <>tidak< dilakukan> dengan sangat efisien, dan hanya ditujukan untuk penggunaan sesekali, seperti ketika pesan antrean dibatalkan.

BlockingQueue implementasi aman utas. Semua metode antrean mencapai efeknya secara atomik menggunakan kunci internal atau bentuk kontrol konkurensi lainnya. Namun, <operasi Pengumpulan massal</em> , , containsAllretainAll dan removeAll apakah <mereka>tidak</em> selalu dilakukan secara atomik kecuali ditentukan sebaliknya dalam implementasi.addAll> Jadi dimungkinkan, misalnya, untuk addAll(c) gagal (melempar pengecualian) setelah menambahkan hanya beberapa elemen di c.

BlockingQueue Apakah <mereka>tidak</em> secara intrinsik mendukung segala jenis " tutup & atau " shutdown" operasi untuk menunjukkan bahwa tidak ada lagi item yang akan ditambahkan. Kebutuhan dan penggunaan fitur tersebut cenderung bergantung pada implementasi. Misalnya, taktik umum adalah bagi produsen untuk memasukkan objek khusus <em>end-of-stream</em> atau <em>poison</em> , yang ditafsirkan sesuai ketika diambil oleh konsumen.

Contoh penggunaan, berdasarkan skenario produsen-konsumen yang khas. Perhatikan bahwa BlockingQueue dapat digunakan dengan aman dengan beberapa produsen dan beberapa konsumen.

{@code
            class Producer implements Runnable {
              private final BlockingQueue queue;
              Producer(BlockingQueue q) { queue = q; }
              public void run() {
                try {
                  while (true) { queue.put(produce()); }
                } catch (InterruptedException ex) { ... handle ...}
              }
              Object produce() { ... }
            }

            class Consumer implements Runnable {
              private final BlockingQueue queue;
              Consumer(BlockingQueue q) { queue = q; }
              public void run() {
                try {
                  while (true) { consume(queue.take()); }
                } catch (InterruptedException ex) { ... handle ...}
              }
              void consume(Object x) { ... }
            }

            class Setup {
              void main() {
                BlockingQueue q = new SomeQueueImplementation();
                Producer p = new Producer(q);
                Consumer c1 = new Consumer(q);
                Consumer c2 = new Consumer(q);
                new Thread(p).start();
                new Thread(c1).start();
                new Thread(c2).start();
              }
            }}

Efek konsistensi memori: Seperti halnya koleksi bersamaan lainnya, tindakan dalam utas sebelum menempatkan objek ke dalam BlockingQueue<tindakan i>happen-before</i> selanjutnya ke akses atau penghapusan elemen tersebut BlockingQueue dari di utas lain.

Antarmuka ini adalah anggota Java Collections Framework.

Ditambahkan dalam 1.5.

Dokumentasi Java untuk java.util.concurrent.BlockingQueue.

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

Handle

Mendapatkan nilai JNI dari objek Android yang mendasar.

(Diperoleh dari IJavaObject)
IsEmpty

Mengembalikan jika ini Collection tidak berisi elemen.

(Diperoleh dari ICollection)
JniIdentityHashCode

Mengembalikan nilai java.lang.System.identityHashCode() untuk instans yang dibungkus.

(Diperoleh dari IJavaPeerable)
JniManagedPeerState

Status serekan terkelola.

(Diperoleh dari IJavaPeerable)
JniPeerMembers

Akses anggota dan dukungan pemanggilan.

(Diperoleh dari IJavaPeerable)
PeerReference

Mengembalikan instans objek Java yang dibungkus JniObjectReference .

(Diperoleh dari IJavaPeerable)

Metode

Add(Object)

Menyisipkan elemen yang ditentukan ke dalam antrean ini jika memungkinkan untuk melakukannya segera tanpa melanggar batasan kapasitas, kembali true setelah berhasil dan melempar IllegalStateException jika saat ini tidak ada ruang yang tersedia.

AddAll(ICollection)

Menambahkan semua elemen dalam koleksi yang ditentukan ke koleksi ini (operasi opsional).

(Diperoleh dari ICollection)
Clear()

Menghapus semua elemen dari koleksi ini (operasi opsional).

(Diperoleh dari ICollection)
Contains(Object)

Mengembalikan true jika antrean ini berisi elemen yang ditentukan.

ContainsAll(ICollection)

Mengembalikan true jika koleksi ini berisi semua elemen dalam koleksi yang ditentukan.

(Diperoleh dari ICollection)
Disposed()

Dipanggil ketika instans telah dibuang.

(Diperoleh dari IJavaPeerable)
DisposeUnlessReferenced()

Jika tidak ada referensi yang luar biasa untuk instans ini, maka panggilan Dispose(); jika tidak, tidak melakukan apa pun.

(Diperoleh dari IJavaPeerable)
DrainTo(ICollection)

Menghapus semua elemen yang tersedia dari antrean ini dan menambahkannya ke koleksi yang diberikan.

DrainTo(ICollection, Int32)

Menghapus paling banyak jumlah elemen yang tersedia dari antrean ini dan menambahkannya ke koleksi yang diberikan.

Element()

Mengambil, tetapi tidak menghapus, kepala antrean ini.

(Diperoleh dari IQueue)
Equals(Object)

Membandingkan objek yang ditentukan dengan koleksi ini untuk kesetaraan.

(Diperoleh dari ICollection)
Finalized()

Dipanggil ketika instans telah diselesaikan.

(Diperoleh dari IJavaPeerable)
ForEach(IConsumer)

Melakukan tindakan yang diberikan untuk setiap elemen Iterable hingga semua elemen telah diproses atau tindakan melemparkan pengecualian.

(Diperoleh dari IIterable)
GetHashCode()

Mengembalikan nilai kode hash untuk koleksi ini.

(Diperoleh dari ICollection)
Iterator()

Mengembalikan iterator di atas elemen dalam koleksi ini.

(Diperoleh dari ICollection)
Offer(Object)

Menyisipkan elemen yang ditentukan ke dalam antrean ini jika memungkinkan untuk melakukannya segera tanpa melanggar batasan kapasitas, kembali true setelah berhasil dan false jika saat ini tidak ada ruang yang tersedia.

Offer(Object, Int64, TimeUnit)

Menyisipkan elemen yang ditentukan ke dalam antrean ini, menunggu hingga waktu tunggu yang ditentukan jika perlu ruang tersedia.

Peek()

Mengambil, tetapi tidak menghapus, kepala antrean ini, atau mengembalikan null jika antrean ini kosong.

(Diperoleh dari IQueue)
Poll()

Mengambil dan menghapus kepala antrean ini, atau mengembalikan null jika antrean ini kosong.

(Diperoleh dari IQueue)
Poll(Int64, TimeUnit)

Mengambil dan menghapus kepala antrean ini, menunggu hingga waktu tunggu yang ditentukan jika perlu elemen tersedia.

Put(Object)

Menyisipkan elemen yang ditentukan ke dalam antrean ini, menunggu jika perlu ruang tersedia.

RemainingCapacity()

Mengembalikan jumlah elemen tambahan yang idealnya dapat diterima oleh antrean ini (tanpa batasan memori atau sumber daya) tanpa pemblokiran, atau Integer.MAX_VALUE jika tidak ada batas intrinsik.

Remove()

Mengambil dan menghapus kepala antrean ini.

(Diperoleh dari IQueue)
Remove(Object)

Menghapus satu instans elemen yang ditentukan dari antrean ini, jika ada.

RemoveAll(ICollection)

Menghapus semua elemen koleksi ini yang juga terkandung dalam koleksi yang ditentukan (operasi opsional).

(Diperoleh dari ICollection)
RemoveIf(IPredicate)

Menghapus semua elemen koleksi ini yang memenuhi predikat yang diberikan.

(Diperoleh dari ICollection)
RetainAll(ICollection)

Hanya mempertahankan elemen dalam koleksi ini yang terkandung dalam koleksi yang ditentukan (operasi opsional).

(Diperoleh dari ICollection)
SetJniIdentityHashCode(Int32)

Atur nilai yang dikembalikan oleh JniIdentityHashCode.

(Diperoleh dari IJavaPeerable)
SetJniManagedPeerState(JniManagedPeerStates)

Queue Yang juga mendukung operasi yang menunggu antrean menjadi tidak kosong saat mengambil elemen, dan menunggu ruang tersedia dalam antrean saat menyimpan elemen.

(Diperoleh dari IJavaPeerable)
SetPeerReference(JniObjectReference)

Atur nilai yang dikembalikan oleh PeerReference.

(Diperoleh dari IJavaPeerable)
Size()

Mengembalikan jumlah elemen dalam koleksi ini.

(Diperoleh dari ICollection)
Spliterator()

Membuat lebih dari elemen yang Spliterator dijelaskan oleh ini Iterable.

(Diperoleh dari IIterable)
Take()

Mengambil dan menghapus kepala antrean ini, menunggu jika perlu sampai elemen tersedia.

ToArray()

Mengembalikan array yang berisi semua elemen dalam koleksi ini.

(Diperoleh dari ICollection)
ToArray(IIntFunction)

Mengembalikan array yang berisi semua elemen dalam koleksi ini, menggunakan fungsi yang disediakan generator untuk mengalokasikan array yang dikembalikan.

(Diperoleh dari ICollection)
ToArray(Object[])

Mengembalikan array yang berisi semua elemen dalam koleksi ini; jenis runtime array yang dikembalikan adalah array yang ditentukan.

(Diperoleh dari ICollection)
UnregisterFromRuntime()

Batalkan pendaftaran instans ini sehingga runtime tidak akan mengembalikannya dari pemanggilan di masa mendatang Java.Interop.JniRuntime+JniValueManager.PeekValue .

(Diperoleh dari IJavaPeerable)

Implementasi Antarmuka Eksplisit

IIterable.Spliterator()

Spliterator Membuat lebih dari elemen dalam koleksi ini.

(Diperoleh dari ICollection)

Metode Ekstensi

JavaCast<TResult>(IJavaObject)

Melakukan konversi jenis yang diperiksa runtime Bahasa Umum Android.

JavaCast<TResult>(IJavaObject)

Queue Yang juga mendukung operasi yang menunggu antrean menjadi tidak kosong saat mengambil elemen, dan menunggu ruang tersedia dalam antrean saat menyimpan elemen.

GetJniTypeName(IJavaPeerable)

Queue Yang juga mendukung operasi yang menunggu antrean menjadi tidak kosong saat mengambil elemen, dan menunggu ruang tersedia dalam antrean saat menyimpan elemen.

OfferAsync(IBlockingQueue, Object)

Queue Yang juga mendukung operasi yang menunggu antrean menjadi tidak kosong saat mengambil elemen, dan menunggu ruang tersedia dalam antrean saat menyimpan elemen.

OfferAsync(IBlockingQueue, Object, Int64, TimeUnit)

Queue Yang juga mendukung operasi yang menunggu antrean menjadi tidak kosong saat mengambil elemen, dan menunggu ruang tersedia dalam antrean saat menyimpan elemen.

PollAsync(IBlockingQueue, Int64, TimeUnit)

Queue Yang juga mendukung operasi yang menunggu antrean menjadi tidak kosong saat mengambil elemen, dan menunggu ruang tersedia dalam antrean saat menyimpan elemen.

PutAsync(IBlockingQueue, Object)

Queue Yang juga mendukung operasi yang menunggu antrean menjadi tidak kosong saat mengambil elemen, dan menunggu ruang tersedia dalam antrean saat menyimpan elemen.

TakeAsync(IBlockingQueue)

Queue Yang juga mendukung operasi yang menunggu antrean menjadi tidak kosong saat mengambil elemen, dan menunggu ruang tersedia dalam antrean saat menyimpan elemen.

ToEnumerable(IIterable)

Queue Yang juga mendukung operasi yang menunggu antrean menjadi tidak kosong saat mengambil elemen, dan menunggu ruang tersedia dalam antrean saat menyimpan elemen.

ToEnumerable<T>(IIterable)

Queue Yang juga mendukung operasi yang menunggu antrean menjadi tidak kosong saat mengambil elemen, dan menunggu ruang tersedia dalam antrean saat menyimpan elemen.

Berlaku untuk