Bagikan melalui


ReentrantReadWriteLock.ReentrantWriteLock.TryLock Metode

Definisi

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.

Dokumentasi Java untuk java.util.concurrent.locks.ReentrantReadWriteLock.WriteLock.tryLock(long, java.util.concurrent.TimeUnit).

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