ILock.LockInterruptibly 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
除非目前執行緒被 Thread#interrupt 中斷,否則會取得鎖。
[Android.Runtime.Register("lockInterruptibly", "()V", "GetLockInterruptiblyHandler:Java.Util.Concurrent.Locks.ILockInvoker, Mono.Android, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null")]
public void LockInterruptibly();
[<Android.Runtime.Register("lockInterruptibly", "()V", "GetLockInterruptiblyHandler:Java.Util.Concurrent.Locks.ILockInvoker, Mono.Android, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null")>]
abstract member LockInterruptibly : unit -> unit
- 屬性
例外狀況
如果目前執行緒在取得鎖時中斷(且支援中斷鎖定取得)
備註
除非目前執行緒被 Thread#interrupt 中斷,否則會取得鎖。
如果有鎖,他會取得並立即歸還。
若鎖不可用,則目前執行緒將因執行緒排程而停用,並處於休眠狀態,直到以下兩種情況之一發生:
<ul><li>鎖定由當前執行緒取得;或 <li>其他執行緒 Thread#interrupt 中斷當前執行緒,且支援中斷鎖定取得。 </ul>
如果目前執行緒:<ul><li>在進入此方法時已設定中斷狀態;或 <li>在取得鎖時被 Thread#interrupt 中斷,且支援鎖取得中斷,則<>會拋出 /ulInterruptedException,當前執行緒的中斷狀態會被清除。
<b>實施考<量/b>
在某些實作中,中斷鎖定取得的能力可能無法實現,即使可能,也可能是一項昂貴的操作。 程式設計師應該知道這可能是事實。 實作應記錄何時發生這種情況。
實作中可能會偏好對中斷的回應,而非一般的方法回傳。
實 Lock 作可能偵測錯誤使用鎖,例如會導致死結的調用,並在此類情況下拋出(未檢查的)例外。 該情況與例外類型必須由該 Lock 實作文件記錄。
Java 文件 java.util.concurrent.locks.Lock.lockInterruptibly()。
本頁部分內容為基於 Open Source Project 所創建與分享的作品,並依授權條款所描述的使用進行修改。