ReentrantLock.LockInterruptibly 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
除非目前執行緒被 Thread#interrupt 中斷,否則會取得鎖。
[Android.Runtime.Register("lockInterruptibly", "()V", "GetLockInterruptiblyHandler")]
public virtual void LockInterruptibly();
[<Android.Runtime.Register("lockInterruptibly", "()V", "GetLockInterruptiblyHandler")>]
abstract member LockInterruptibly : unit -> unit
override this.LockInterruptibly : unit -> unit
實作
- 屬性
例外狀況
如果目前執行緒被中斷
備註
除非目前執行緒被 Thread#interrupt 中斷,否則會取得鎖。
若鎖未被其他執行緒持有,則取得該鎖並立即返回,並將鎖保持次數設為一。
如果目前執行緒已經持有此鎖,則保持次數會增加一,方法會立即回傳。
若鎖被其他執行緒持有,則當前執行緒將因執行緒排程而被停用,並處於休眠狀態,直到以下兩種情況之一發生:
<UL>
<li>鎖由當前執行緒取得;或
<li>某個其他執行緒 Thread#interrupt 會中斷目前執行緒。
</ul>
若鎖定由當前執行緒取得,則鎖定保持次數設為一。
如果目前的討論串:
<UL>
<LI>在其進入此方法時設定為中斷狀態;或
<li>是在取得鎖時被 Thread#interrupt 中斷,
</ul>
接著 InterruptedException 拋出,當前執行緒的中斷狀態被清除。
在此實作中,由於此方法為明確的中斷點,優先回應中斷而非正常或重入鎖定。
的 java.util.concurrent.locks.ReentrantLock.lockInterruptibly()Java 檔。
本頁部分內容為基於 Open Source Project 所創建與分享的作品,並依授權條款所描述的使用進行修改。