ReentrantReadWriteLock.ReentrantWriteLock.TryLock Metode
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.
Overload
| TryLock() |
Memperoleh kunci tulis hanya jika tidak dipegang oleh utas lain pada saat pemanggilan. |
| TryLock(Int64, TimeUnit) |
Memperoleh kunci tulis jika tidak ditahan oleh utas lain dalam waktu tunggu yang diberikan dan utas saat ini belum Utas#gangguan terganggu. |
TryLock()
Memperoleh kunci tulis hanya jika tidak dipegang oleh utas lain pada saat pemanggilan.
[Android.Runtime.Register("tryLock", "()Z", "GetTryLockHandler")]
public virtual bool TryLock();
[<Android.Runtime.Register("tryLock", "()Z", "GetTryLockHandler")>]
abstract member TryLock : unit -> bool
override this.TryLock : unit -> bool
Mengembalikan
true jika kunci bebas dan diperoleh oleh utas saat ini, atau kunci tulis sudah dipegang oleh utas saat ini; dan false jika tidak.
Penerapan
- Atribut
Keterangan
Memperoleh kunci tulis hanya jika tidak dipegang oleh utas lain pada saat pemanggilan.
Memperoleh kunci tulis jika kunci baca atau tulis tidak dipegang oleh utas lain dan segera kembali dengan nilai true, mengatur jumlah penahanan kunci tulis ke satu. Bahkan ketika kunci ini telah diatur untuk menggunakan kebijakan pemesanan yang adil, panggilan ke tryLock()<em>akan< segera> memperoleh kunci jika tersedia, apakah utas lain saat ini sedang menunggu kunci tulis atau tidak. Ini & barging" dapat berguna dalam keadaan tertentu, meskipun melanggar kewajaran. Jika Anda ingin menghormati pengaturan kewajaran untuk kunci ini, maka gunakan #tryLock(long, TimeUnit) tryLock(0, TimeUnit.SECONDS) yang hampir setara (juga mendeteksi gangguan).
Jika utas saat ini sudah memegang kunci ini maka jumlah penangguhan bertambah satu dan metode mengembalikan true.
Jika kunci dipegang oleh utas lain maka metode ini akan segera kembali dengan nilai false.
Dokumentasi Java untuk java.util.concurrent.locks.ReentrantReadWriteLock.WriteLock.tryLock().
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.
Berlaku untuk
TryLock(Int64, TimeUnit)
Memperoleh kunci tulis jika tidak ditahan oleh utas lain dalam waktu tunggu yang diberikan dan utas saat ini belum Utas#gangguan terganggu.
[Android.Runtime.Register("tryLock", "(JLjava/util/concurrent/TimeUnit;)Z", "GetTryLock_JLjava_util_concurrent_TimeUnit_Handler")]
public virtual bool TryLock(long timeout, Java.Util.Concurrent.TimeUnit? unit);
[<Android.Runtime.Register("tryLock", "(JLjava/util/concurrent/TimeUnit;)Z", "GetTryLock_JLjava_util_concurrent_TimeUnit_Handler")>]
abstract member TryLock : int64 * Java.Util.Concurrent.TimeUnit -> bool
override this.TryLock : int64 * Java.Util.Concurrent.TimeUnit -> bool
Parameter
- timeout
- Int64
waktu untuk menunggu kunci tulis
- unit
- TimeUnit
unit waktu argumen batas waktu
Mengembalikan
true jika kunci bebas dan diperoleh oleh utas saat ini, atau kunci tulis sudah dipegang oleh utas saat ini; dan false jika waktu tunggu berlalu sebelum kunci dapat diperoleh.
Penerapan
- Atribut
Pengecualian
jika utas saat ini terganggu
jika unit waktu null
Keterangan
Memperoleh kunci tulis jika tidak ditahan oleh utas lain dalam waktu tunggu yang diberikan dan utas saat ini belum Utas#gangguan terganggu.
Memperoleh kunci tulis jika kunci baca atau tulis tidak dipegang oleh utas lain dan segera kembali dengan nilai true, mengatur jumlah penahanan kunci tulis ke satu. Jika kunci ini telah diatur untuk menggunakan kebijakan pemesanan yang adil, maka kunci <>yang tersedia tidak< akan diperoleh jika> ada utas lain yang menunggu kunci tulis. Ini berbeda dengan #tryLock() metode . Jika Anda ingin waktu tryLock yang mengizinkan pembatas pada kunci yang adil, maka gabungkan formulir berwakti dan tidak berwakil bersama-sama:
{@code
if (lock.tryLock() ||
lock.tryLock(timeout, unit)) {
...
}}
Jika utas saat ini sudah memegang kunci ini maka jumlah penangguhan bertambah satu dan metode mengembalikan true.
Jika kunci dipegang oleh utas lain, maka utas saat ini menjadi dinonaktifkan untuk tujuan penjadwalan utas dan terletak tidak aktif sampai salah satu dari tiga hal terjadi:
<Ul>
<li>Kunci tulis diperoleh oleh utas saat ini; atau
<li>Beberapa thread Thread lainnya#interupsi mengganggu utas saat ini; atau
<li>Waktu tunggu yang ditentukan berlalu
</Ul>
Jika kunci tulis diperoleh, maka nilai true dikembalikan dan jumlah penahanan kunci tulis diatur ke satu.
Jika utas saat ini:
<Ul>
<li>memiliki status terganggu yang ditetapkan pada entri ke metode ini; atau
<li>adalah Thread#interuppt interupted saat memperoleh kunci tulis,
</Ul>
kemudian InterruptedException dilemparkan dan status terganggu utas saat ini dibersihkan.
Jika waktu tunggu yang ditentukan berlalu, maka nilai false dikembalikan. Jika waktu kurang dari atau sama dengan nol, metode tidak akan menunggu sama sekali.
Dalam implementasi ini, karena metode ini adalah titik gangguan eksplisit, preferensi diberikan untuk menanggapi interupsi atas akuisisi kunci normal atau reentrant, dan atas pelaporan berlalunya waktu tunggu.
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.