Exchanger Kelas
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
Titik sinkronisasi di mana utas dapat memasangkan dan menukar elemen dalam pasangan.
[Android.Runtime.Register("java/util/concurrent/Exchanger", DoNotGenerateAcw=true)]
[Java.Interop.JavaTypeParameters(new System.String[] { "V" })]
public class Exchanger : Java.Lang.Object
[<Android.Runtime.Register("java/util/concurrent/Exchanger", DoNotGenerateAcw=true)>]
[<Java.Interop.JavaTypeParameters(new System.String[] { "V" })>]
type Exchanger = class
inherit Object
- Warisan
- Atribut
Keterangan
Titik sinkronisasi di mana utas dapat memasangkan dan menukar elemen dalam pasangan. Setiap utas menyajikan beberapa objek saat masuk ke #exchange exchange metode , cocok dengan utas mitra, dan menerima objek mitranya saat dikembalikan. Exchanger dapat dilihat sebagai bentuk dua arah dari SynchronousQueue. Exchanger mungkin berguna dalam aplikasi seperti algoritma genetik dan desain alur.
<b>Penggunaan Sampel:</b> Berikut adalah sorotan kelas yang menggunakan Exchanger buffer untuk menukar antara utas sehingga utas yang mengisi buffer mendapatkan yang baru dikosongkan ketika membutuhkannya, menyerahkan yang diisi ke utas yang mengosongkan buffer.
{@code
class FillAndEmpty {
Exchanger<DataBuffer> exchanger = new Exchanger<>();
DataBuffer initialEmptyBuffer = ...; // a made-up type
DataBuffer initialFullBuffer = ...;
class FillingLoop implements Runnable {
public void run() {
DataBuffer currentBuffer = initialEmptyBuffer;
try {
while (currentBuffer != null) {
addToBuffer(currentBuffer);
if (currentBuffer.isFull())
currentBuffer = exchanger.exchange(currentBuffer);
}
} catch (InterruptedException ex) { ... handle ...}
}
}
class EmptyingLoop implements Runnable {
public void run() {
DataBuffer currentBuffer = initialFullBuffer;
try {
while (currentBuffer != null) {
takeFromBuffer(currentBuffer);
if (currentBuffer.isEmpty())
currentBuffer = exchanger.exchange(currentBuffer);
}
} catch (InterruptedException ex) { ... handle ...}
}
}
void start() {
new Thread(new FillingLoop()).start();
new Thread(new EmptyingLoop()).start();
}
}}
Efek konsistensi memori: Untuk setiap pasangan utas yang berhasil bertukar objek melalui Exchanger, tindakan sebelum exchange() di setiap utas <i>terjadi sebelumnya</i> yang selanjutnya ke pengembalian dari yang sesuai exchange() di utas lain.
Ditambahkan dalam 1.5.
Java dokumentasi untuk java.util.concurrent.Exchanger.
Bagian dari halaman ini adalah modifikasi berdasarkan pekerjaan yang dibuat dan dibagikan oleh Android Open Source Project dan digunakan sesuai dengan istilah yang dijelaskan dalam Lisensi Creative Commons 2.5 Lisensi Atribusi.
Konstruktor
| Nama | Deskripsi |
|---|---|
| Exchanger() |
Membuat Exchanger baru. |
| Exchanger(IntPtr, JniHandleOwnership) |
Konstruktor yang digunakan saat membuat representasi terkelola objek JNI; dipanggil oleh runtime. |
Properti
| Nama | Deskripsi |
|---|---|
| Class |
Mengembalikan kelas runtime dari . |
| Handle |
Handel ke instans Android yang mendasar. (Diperoleh dari Object) |
| JniIdentityHashCode |
Mendapatkan kode hash identitas yang ditetapkan ke Java peer ini oleh runtime interop. (Diperoleh dari Object) |
| JniManagedPeerState |
Titik sinkronisasi di mana utas dapat memasangkan dan menukar elemen dalam pasangan. (Diperoleh dari JavaObject) |
| JniPeerMembers |
Titik sinkronisasi di mana utas dapat memasangkan dan menukar elemen dalam pasangan. |
| PeerReference |
Mendapatkan referensi objek JNI untuk peer Java ini. (Diperoleh dari Object) |
| ThresholdClass |
API ini mendukung infrastruktur Mono untuk Android dan tidak dimaksudkan untuk digunakan langsung dari kode Anda. |
| ThresholdType |
API ini mendukung infrastruktur Mono untuk Android dan tidak dimaksudkan untuk digunakan langsung dari kode Anda. |
Metode
| Nama | Deskripsi |
|---|---|
| Clone() |
Membuat dan mengembalikan salinan objek ini. (Diperoleh dari Object) |
| Construct(JniObjectReference, JniObjectReferenceOptions) |
Titik sinkronisasi di mana utas dapat memasangkan dan menukar elemen dalam pasangan. (Diperoleh dari JavaObject) |
| Dispose() |
Merilis sumber daya yang dipegang oleh rekan Java ini. (Diperoleh dari Object) |
| Dispose(Boolean) |
Merilis sumber daya yang dipegang oleh rekan Java ini. (Diperoleh dari Object) |
| DisposeUnlessReferenced() |
Titik sinkronisasi di mana utas dapat memasangkan dan menukar elemen dalam pasangan. (Diperoleh dari JavaObject) |
| Equals(Object) |
Titik sinkronisasi di mana utas dapat memasangkan dan menukar elemen dalam pasangan. (Diperoleh dari JavaObject) |
| Equals(Object) |
Menunjukkan apakah beberapa objek lain "sama dengan" yang satu ini. (Diperoleh dari Object) |
| Exchange(Object, Int64, TimeUnit) |
Menunggu utas lain tiba di titik pertukaran ini (kecuali utas saat ini adalah Utas#interupsi terganggu atau waktu tunggu yang ditentukan berlalu), lalu mentransfer objek yang diberikan ke dalamnya, menerima objeknya sebagai imbalannya. |
| Exchange(Object) |
Menunggu utas lain tiba di titik pertukaran ini (kecuali utas saat ini adalah Utas#interupsi terganggu), lalu mentransfer objek yang diberikan ke dalamnya, menerima objeknya sebagai imbalannya. |
| 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) |
Mengatur properti Handle. (Diperoleh dari Object) |
| SetPeerReference(JniObjectReference, JniObjectReferenceOptions) |
Titik sinkronisasi di mana utas dapat memasangkan dan menukar elemen dalam pasangan. (Diperoleh dari JavaObject) |
| ToArray<T>() |
Membuat array terkelola dari pembungkus array Java ini. (Diperoleh dari Object) |
| ToString() |
Mengembalikan representasi string objek. (Diperoleh dari Object) |
| UnregisterFromRuntime() |
Membatalkan pendaftaran peer Java ini dari runtime interop. (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 waktu nyata berlalu. (Diperoleh dari Object) |
| Wait(Int64) |
Menyebabkan utas saat ini menunggu sampai terbangun, biasanya dengan <>diberitahu</em> atau <em>terganggu</em>, atau sampai sejumlah waktu nyata berlalu. (Diperoleh dari Object) |
Implementasi Antarmuka Eksplisit
| Nama | Deskripsi |
|---|---|
| IJavaPeerable.Disposed() |
Titik sinkronisasi di mana utas dapat memasangkan dan menukar elemen dalam pasangan. (Diperoleh dari JavaObject) |
| IJavaPeerable.Finalized() |
Titik sinkronisasi di mana utas dapat memasangkan dan menukar elemen dalam pasangan. (Diperoleh dari JavaObject) |
| IJavaPeerable.JniObjectReferenceControlBlock |
Titik sinkronisasi di mana utas dapat memasangkan dan menukar elemen dalam pasangan. (Diperoleh dari JavaObject) |
| IJavaPeerable.SetJniIdentityHashCode(Int32) |
Titik sinkronisasi di mana utas dapat memasangkan dan menukar elemen dalam pasangan. (Diperoleh dari JavaObject) |
| IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) |
Titik sinkronisasi di mana utas dapat memasangkan dan menukar elemen dalam pasangan. (Diperoleh dari JavaObject) |
| IJavaPeerable.SetPeerReference(JniObjectReference) |
Titik sinkronisasi di mana utas dapat memasangkan dan menukar elemen dalam pasangan. (Diperoleh dari JavaObject) |
Metode Ekstensi
| Nama | Deskripsi |
|---|---|
| GetJniTypeName(IJavaPeerable) |
Mendapatkan nama JNI dari jenis instans |
| JavaAs<TResult>(IJavaPeerable) |
Cobalah untuk memaksa |
| JavaCast<TResult>(IJavaObject) |
Melakukan konversi jenis yang diperiksa runtime Android. |
| JavaCast<TResult>(IJavaObject) |
Titik sinkronisasi di mana utas dapat memasangkan dan menukar elemen dalam pasangan. |
| TryJavaCast<TResult>(IJavaPeerable, TResult) |
Cobalah untuk memaksa |