ReentrantLock 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.
Pengecualian Lock bersama yang masuk kembali dengan perilaku dasar dan semantik yang sama dengan kunci monitor implisit yang diakses menggunakan synchronized metode dan pernyataan, tetapi dengan kemampuan yang diperluas.
[Android.Runtime.Register("java/util/concurrent/locks/ReentrantLock", DoNotGenerateAcw=true)]
public class ReentrantLock : Java.Lang.Object, IDisposable, Java.IO.ISerializable, Java.Util.Concurrent.Locks.ILock
[<Android.Runtime.Register("java/util/concurrent/locks/ReentrantLock", DoNotGenerateAcw=true)>]
type ReentrantLock = class
inherit Object
interface ISerializable
interface IJavaObject
interface IDisposable
interface IJavaPeerable
interface ILock
- Warisan
- Atribut
- Penerapan
Keterangan
Pengecualian Lock bersama yang masuk kembali dengan perilaku dasar dan semantik yang sama dengan kunci monitor implisit yang diakses menggunakan synchronized metode dan pernyataan, tetapi dengan kemampuan yang diperluas.
ReentrantLock adalah <em>dimiliki< / em> oleh utas terakhir berhasil mengunci, tetapi belum membukanya. Pemanggilan lock utas akan kembali, berhasil memperoleh kunci, ketika kunci tidak dimiliki oleh utas lain. Metode akan segera kembali jika utas saat ini sudah memiliki kunci. Ini dapat diperiksa menggunakan metode #isHeldByCurrentThread, dan #getHoldCount.
Konstruktor untuk kelas ini menerima parameter kewajaran/em< opsional><.> Saat diatur true, di bawah ketidakcocokan, kunci mendukung pemberian akses ke utas terpanjang yang menunggu. Jika tidak, kunci ini tidak menjamin urutan akses tertentu. Program yang menggunakan kunci wajar yang diakses oleh banyak utas dapat menampilkan throughput keseluruhan yang lebih rendah (yaitu, lebih lambat; sering jauh lebih lambat) daripada yang menggunakan pengaturan default, tetapi memiliki variansi yang lebih kecil dalam waktu untuk mendapatkan kunci dan menjamin kurangnya kelaparan. Namun, perhatikan bahwa kewajaran kunci tidak menjamin kewajaran penjadwalan utas. Dengan demikian, salah satu dari banyak utas yang menggunakan kunci yang adil dapat memperolehnya beberapa kali berturut-turut sementara utas aktif lainnya tidak mengalami kemajuan dan saat ini tidak menahan kunci. Perhatikan juga bahwa metode untimed #tryLock() tidak menghormati pengaturan kewajaran. Ini akan berhasil jika kunci tersedia bahkan jika utas lain menunggu.
Disarankan untuk berlatih kepada mereka selalu/em< segera mengikuti panggilan ke > dengan < blok, paling biasanya dalam sebelum/setelah konstruksi seperti:>locktry
{@code
class X {
private final ReentrantLock lock = new ReentrantLock();
// ...
public void m() {
lock.lock(); // block until condition holds
try {
// ... method body
} finally {
lock.unlock();
}
}
}}
Selain mengimplementasikan Lock antarmuka, kelas ini mendefinisikan sejumlah public metode dan protected untuk memeriksa status kunci. Beberapa metode ini hanya berguna untuk instrumentasi dan pemantauan.
Serialisasi kelas ini berperilaku dengan cara yang sama seperti kunci bawaan: kunci deserialisasi dalam keadaan tidak terkunci, terlepas dari statusnya saat diserialisasikan.
Kunci ini mendukung maksimum 2147483647 kunci rekursif dengan utas yang sama. Upaya untuk melebihi batas ini mengakibatkan Error pelemparan dari metode penguncian.
Ditambahkan dalam 1.5.
Java dokumentasi untuk java.util.concurrent.locks.ReentrantLock.
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 |
|---|---|
| ReentrantLock() |
Membuat instans . |
| ReentrantLock(Boolean) |
Membuat instans |
| ReentrantLock(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) |
| HasQueuedThreads |
Kueri apakah ada utas yang menunggu untuk memperoleh kunci ini. |
| HoldCount |
Mengkueri jumlah penangguhan pada kunci ini oleh utas saat ini. |
| IsFair |
Mengembalikan |
| IsHeldByCurrentThread |
Kueri jika kunci ini dipegang oleh utas saat ini. |
| IsLocked |
Kueri jika kunci ini dipegang oleh utas apa pun. |
| JniIdentityHashCode |
Mendapatkan kode hash identitas yang ditetapkan ke Java peer ini oleh runtime interop. (Diperoleh dari Object) |
| JniManagedPeerState |
Pengecualian |
| JniPeerMembers |
Mendapatkan metadata JNI yang digunakan untuk memanggil anggota peer Java ini. |
| Owner |
Mengembalikan utas yang saat ini memiliki kunci ini, atau |
| PeerReference |
Mendapatkan referensi objek JNI untuk peer Java ini. (Diperoleh dari Object) |
| QueuedThreads |
Mengembalikan koleksi yang berisi utas yang mungkin menunggu untuk memperoleh kunci ini. |
| QueueLength |
Mengembalikan perkiraan jumlah utas yang menunggu untuk memperoleh kunci ini. |
| 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) |
Pengecualian |
| 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() |
Pengecualian |
| Equals(Object) |
Pengecualian |
| 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) |
| GetWaitingThreads(ICondition) |
Mengembalikan koleksi yang berisi utas yang mungkin menunggu kondisi tertentu yang terkait dengan kunci ini. |
| GetWaitQueueLength(ICondition) |
Mengembalikan perkiraan jumlah utas yang menunggu kondisi tertentu yang terkait dengan kunci ini. |
| HasQueuedThread(Thread) |
Kueri apakah utas yang diberikan sedang menunggu untuk memperoleh kunci ini. |
| HasWaiters(ICondition) |
Kueri apakah ada utas yang menunggu pada kondisi tertentu yang terkait dengan kunci ini. |
| JavaFinalize() |
Dipanggil oleh pengumpul sampah pada objek ketika pengumpulan sampah menentukan bahwa tidak ada lagi referensi ke objek. (Diperoleh dari Object) |
| Lock() |
Memperoleh kunci. |
| LockInterruptibly() |
Memperoleh kunci kecuali utas saat ini adalah Thread#interupted. |
| NewCondition() |
Mengembalikan instans untuk digunakan dengan instans |
| 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) |
Pengecualian |
| ToArray<T>() |
Membuat array terkelola dari pembungkus array Java ini. (Diperoleh dari Object) |
| ToString() |
Mengembalikan representasi string objek. (Diperoleh dari Object) |
| TryLock() |
Memperoleh kunci hanya jika tidak dipegang oleh utas lain pada saat pemanggilan. |
| TryLock(Int64, TimeUnit) |
Memperoleh kunci jika tidak dipegang oleh utas lain dalam waktu tunggu yang diberikan dan utas saat ini belum Utas#interupsi terganggu. |
| Unlock() |
Mencoba melepaskan kunci ini. |
| 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() |
Pengecualian |
| IJavaPeerable.Finalized() |
Pengecualian |
| IJavaPeerable.JniObjectReferenceControlBlock |
Pengecualian |
| IJavaPeerable.SetJniIdentityHashCode(Int32) |
Pengecualian |
| IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) |
Pengecualian |
| IJavaPeerable.SetPeerReference(JniObjectReference) |
Pengecualian |
| IJavaPeerable.UnregisterFromRuntime() |
Pengecualian |
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) |
Pengecualian |
| TryJavaCast<TResult>(IJavaPeerable, TResult) |
Cobalah untuk memaksa |