語言

ReentrantReadWriteLock.ReentrantWriteLock.LockInterruptibly 方法

定義

除非目前執行緒被 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.ReentrantReadWriteLock.WriteLock.lockInterruptibly()Java 檔。

此頁面的部分是根據 Android 開放原始碼專案所建立和共用的工作進行修改,並根據 Creative Commons 2.5 屬性授權中所述的詞彙使用。

適用於