ReentrantReadWriteLock.ReentrantReadLock.TryLock 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
多載
| 名稱 | Description |
|---|---|
| TryLock() |
只有當呼叫時寫鎖未被其他執行緒持有時,才會取得讀取鎖。 |
| TryLock(Int64, TimeUnit) |
若在指定等待時間內未被其他執行緒持有寫入鎖,且當前執行緒未被 Thread#interrupt 中斷,則取得讀取鎖。 |
TryLock()
只有當呼叫時寫鎖未被其他執行緒持有時,才會取得讀取鎖。
[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
傳回
true 如果讀取鎖已被取得
實作
- 屬性
備註
只有當呼叫時寫鎖未被其他執行緒持有時,才會取得讀取鎖。
若寫鎖未被其他執行緒持有,則取得讀取鎖,並立即返回值 true。 即使此鎖已設定為公平排序政策,tryLock()<呼叫 em><> 也會立即取得讀取鎖(若有讀取鎖),無論其他執行緒是否正在等待讀取鎖。 這個 ”駁船”在某些情況下,行為有時仍可能有用,儘管它違反了公平。 如果你想尊重這個鎖的公平設定,那就用 #tryLock(long, TimeUnit) tryLock(0, TimeUnit.SECONDS) 它幾乎等同(它也能偵測中斷)。
若寫入鎖被另一執行緒持有,則此方法會立即回傳 ,並取得值 false。
的 java.util.concurrent.locks.ReentrantReadWriteLock.ReadLock.tryLock()Java 檔。
此頁面的部分是根據 Android 開放原始碼專案所建立和共用的工作進行修改,並根據 Creative Commons 2.5 屬性授權中所述的詞彙使用。
適用於
TryLock(Int64, TimeUnit)
若在指定等待時間內未被其他執行緒持有寫入鎖,且當前執行緒未被 Thread#interrupt 中斷,則取得讀取鎖。
[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
參數
- timeout
- Int64
等待讀取鎖定的時間
- unit
- TimeUnit
超時論證的時間單位
傳回
true 如果讀取鎖已被取得
實作
- 屬性
例外狀況
如果目前執行緒被中斷
若時間單位為零
備註
若在指定等待時間內未被其他執行緒持有寫入鎖,且當前執行緒未被 Thread#interrupt 中斷,則取得讀取鎖。
若寫鎖未被其他執行緒持有,則取得讀取鎖,並立即返回值 true。 如果此鎖已設定為公平排序政策,則若有其他執行緒等待該鎖,則可用的鎖 <em>將不會<>被取得。 這與方法 #tryLock() 形成對比。 如果你想要一個允許衝撞公平鎖的計時 tryLock 表單,那就把計時和非計時表合併一起:
{@code
if (lock.tryLock() ||
lock.tryLock(timeout, unit)) {
...
}}
若寫入鎖由另一執行緒持有,則目前執行緒將因排程而停用,並處於休眠狀態,直到以下三種情況之一發生:
<UL>
<li>讀取鎖由當前執行緒取得;或
<li>其他執行緒 Thread#interrupt 中斷當前執行緒;或
<李>規定的等待時間已過。
</ul>
若讀取鎖被取得,則回傳該值 true 。
如果目前的討論串:
<UL>
<LI>在其進入此方法時設定為中斷狀態;或
<li>是 Thread#interrupt 在取得讀取鎖時被中斷,
<接著>拋出 /ulInterruptedException,當前執行緒的中斷狀態會被清除。
若等待時間達到指定時間,則會回傳該值 false 。 若時間小於或等於零,該方法將完全不等待。
在此實作中,由於此方法為明確的中斷點,優先回應中斷而非正常或重入鎖定,且優先回報等待時間的經過。
此頁面的部分是根據 Android 開放原始碼專案所建立和共用的工作進行修改,並根據 Creative Commons 2.5 屬性授權中所述的詞彙使用。