ILock.TryLock 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
多載
| 名稱 | Description |
|---|---|
| TryLock() |
只有在召喚時鎖是空的,才能獲得該鎖。 |
| TryLock(Int64, TimeUnit) |
若在指定等待時間內鎖空閒且當前執行緒未被 Thread#interrupt 中斷,則會取得該鎖。 |
TryLock()
只有在召喚時鎖是空的,才能獲得該鎖。
[Android.Runtime.Register("tryLock", "()Z", "GetTryLockHandler:Java.Util.Concurrent.Locks.ILockInvoker, Mono.Android, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null")]
public bool TryLock();
[<Android.Runtime.Register("tryLock", "()Z", "GetTryLockHandler:Java.Util.Concurrent.Locks.ILockInvoker, Mono.Android, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null")>]
abstract member TryLock : unit -> bool
傳回
true 如果鎖是取得的,或其他 false 情況
- 屬性
備註
只有在召喚時鎖是空的,才能獲得該鎖。
若鎖可用,則取得該鎖,並立即返回 true。 若鎖不可用,此方法將立即返回 ,並取得值 false。
此方法的典型使用慣用語為:
{@code
Lock lock = ...;
if (lock.tryLock()) {
try {
// manipulate protected state
} finally {
lock.unlock();
}
} else {
// perform alternative actions
}}
此用法確保鎖在取得時會解鎖,且不會嘗試解鎖未取得鎖。
Java 文件 java.util.concurrent.locks.Lock.tryLock()。
本頁部分內容為基於 Open Source Project 所創建與分享的作品,並依授權條款所描述的使用進行修改。
適用於
TryLock(Int64, TimeUnit)
若在指定等待時間內鎖空閒且當前執行緒未被 Thread#interrupt 中斷,則會取得該鎖。
[Android.Runtime.Register("tryLock", "(JLjava/util/concurrent/TimeUnit;)Z", "GetTryLock_JLjava_util_concurrent_TimeUnit_Handler:Java.Util.Concurrent.Locks.ILockInvoker, Mono.Android, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null")]
public bool TryLock(long time, Java.Util.Concurrent.TimeUnit? unit);
[<Android.Runtime.Register("tryLock", "(JLjava/util/concurrent/TimeUnit;)Z", "GetTryLock_JLjava_util_concurrent_TimeUnit_Handler:Java.Util.Concurrent.Locks.ILockInvoker, Mono.Android, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null")>]
abstract member TryLock : int64 * Java.Util.Concurrent.TimeUnit -> bool
參數
- time
- Int64
等待鎖的最長時間
- unit
- TimeUnit
論證的時間 time 單位
傳回
true 若已取得鎖具,且 false 等待時間已過後才取得
- 屬性
例外狀況
如果目前執行緒在取得鎖時中斷(且支援中斷鎖定取得)
備註
若在指定等待時間內鎖空閒且當前執行緒未被 Thread#interrupt 中斷,則會取得該鎖。
若鎖可用,此方法立即返回 ,並取得值 true。 若鎖不可用,則當前執行緒將被停用以進行執行緒排程,並處於休眠狀態,直到以下三種情況之一發生:ul<li 鎖定被當前執行緒取得;或 >li<其他執行緒 Thread#interrupt 中斷目前執行緒,且支援中斷鎖定取得;或 >li<指定的等待時間經過 >/ul<><>
若鎖定成功,則該數值 true 會被回傳。
如果目前執行緒:<ul><li>在進入此方法時已設定中斷狀態;或 <li>在取得鎖時被 Thread#interrupt 中斷,且支援鎖取得中斷,則<>會拋出 /ulInterruptedException,當前執行緒的中斷狀態會被清除。
若等待時間達到指定時間,則會回傳該值 false 。 若時間小於或等於零,該方法將完全不等待。
<b>實施考<量/b>
在某些實作中,中斷鎖定取得的能力可能無法實現,即使可能,也可能是一項昂貴的操作。 程式設計師應該知道這可能是事實。 實作應記錄何時發生這種情況。
實作可以偏好回應中斷而非一般方法回傳,或回報逾時。
實 Lock 作可能偵測錯誤使用鎖,例如會導致死結的調用,並在此類情況下拋出(未檢查的)例外。 該情況與例外類型必須由該 Lock 實作文件記錄。
Java 文件 java.util.concurrent.locks.Lock.tryLock(long, java.util.concurrent.TimeUnit)。
本頁部分內容為基於 Open Source Project 所創建與分享的作品,並依授權條款所描述的使用進行修改。