ReentrantLock.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
| Nama | Deskripsi |
|---|---|
| TryLock(Int64, TimeUnit) |
Memperoleh kunci jika tidak dipegang oleh utas lain dalam waktu tunggu yang diberikan dan utas saat ini belum Utas#interupsi terganggu. |
| 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.
[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
- unit
- TimeUnit
unit waktu argumen batas waktu
Mengembalikan
true jika kunci bebas dan diperoleh oleh utas saat ini, atau kunci 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 jika tidak dipegang oleh utas lain dalam waktu tunggu yang diberikan dan utas saat ini belum Utas#interupsi terganggu.
Memperoleh kunci jika tidak dipegang oleh utas lain dan segera kembali dengan nilai true, mengatur jumlah penahanan kunci menjadi 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. 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, jumlah penangguhan akan 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 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 diperoleh maka nilai true dikembalikan dan jumlah penahanan kunci diatur ke satu.
Jika utas saat ini:
<ul>
<li>memiliki status terganggu yang ditetapkan pada entri ke metode ini; atau
<li>adalah Thread#interrupt terganggu saat memperoleh kunci,
</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 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.
Berlaku untuk
TryLock()
Memperoleh kunci 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 sudah dipegang oleh utas saat ini; dan false jika tidak
Penerapan
- Atribut
Keterangan
Memperoleh kunci hanya jika tidak dipegang oleh utas lain pada saat pemanggilan.
Memperoleh kunci jika tidak dipegang oleh utas lain dan segera kembali dengan nilai true, mengatur jumlah penahanan kunci menjadi 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 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, jumlah penangguhan akan bertambah satu dan metode mengembalikan true.
Jika kunci dipegang oleh utas lain maka metode ini akan segera kembali dengan nilai false.
Java dokumentasi untuk java.util.concurrent.locks.ReentrantLock.tryLock().
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.