語言

ILock.LockInterruptibly 方法

定義

除非目前執行緒被 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 所創建與分享的作品,並依授權條款所描述的使用進行修改。

適用於