ReentrantLock Kelas

Definisi

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
ReentrantLock
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

ReentrantLock(Boolean)

Membuat instans ReentrantLock dengan kebijakan kewajaran yang diberikan.

ReentrantLock(IntPtr, JniHandleOwnership)

Konstruktor yang digunakan saat membuat representasi terkelola objek JNI; dipanggil oleh runtime.

Properti

Nama Deskripsi
Class

Mengembalikan kelas runtime dari .Object

(Diperoleh dari Object)
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 true jika kunci ini memiliki kewajaran yang ditetapkan true.

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 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.

(Diperoleh dari JavaObject)
JniPeerMembers

Mendapatkan metadata JNI yang digunakan untuk memanggil anggota peer Java ini.

Owner

Mengembalikan utas yang saat ini memiliki kunci ini, atau null jika tidak dimiliki.

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 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.

(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()

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.

(Diperoleh dari JavaObject)
Equals(Object)

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.

(Diperoleh dari JavaObject)
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 Condition ini Lock .

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 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.

(Diperoleh dari JavaObject)
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 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.

(Diperoleh dari JavaObject)
IJavaPeerable.Finalized()

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.

(Diperoleh dari JavaObject)
IJavaPeerable.JniObjectReferenceControlBlock

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.

(Diperoleh dari JavaObject)
IJavaPeerable.SetJniIdentityHashCode(Int32)

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.

(Diperoleh dari JavaObject)
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates)

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.

(Diperoleh dari JavaObject)
IJavaPeerable.SetPeerReference(JniObjectReference)

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.

(Diperoleh dari JavaObject)
IJavaPeerable.UnregisterFromRuntime()

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.

Metode Ekstensi

Nama Deskripsi
GetJniTypeName(IJavaPeerable)

Mendapatkan nama JNI dari jenis instans self.

JavaAs<TResult>(IJavaPeerable)

Cobalah untuk memaksa self untuk mengetik TResult, memeriksa bahwa paksaan valid di sisi Java.

JavaCast<TResult>(IJavaObject)

Melakukan konversi jenis yang diperiksa runtime Android.

JavaCast<TResult>(IJavaObject)

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.

TryJavaCast<TResult>(IJavaPeerable, TResult)

Cobalah untuk memaksa self untuk mengetik TResult, memeriksa bahwa paksaan valid di sisi Java.

Berlaku untuk