ILock.LockInterruptibly 方法

定义

除非当前线程被 Thread#中断中断,否则获取锁。

[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#中断中断,否则获取锁。

获取锁(如果可用),并立即返回。

如果锁不可用,则当前线程出于线程计划目的被禁用,并处于休眠状态,直到发生以下两件事之一:

<ul><li>锁由当前线程获取;或者 <li>其他线程 Thread#interrupt 中断中断当前线程,并且支持锁定获取中断。 </ul>

如果当前线程:<ul><li 在进入此方法时设置了中断状态;或者 <li>>是在获取锁时中断的 Thread#interrupt,并且支持锁定获取中断,则会InterruptedException引发 /ul>,<并清除当前线程中断的状态。

<b>实现注意事项</b>

在某些实现中中断锁获取的能力可能是不可能的,如果可能,可能是一项昂贵的操作。 程序员应注意这种情况。 实现应在这种情况发生时记录。

实现有利于响应中断,而常规方法返回。

Lock实现可能能够检测锁的错误使用,例如导致死锁的调用,并可能在此类情况下引发(未选中)异常。 该实现必须记录 Lock 情况和异常类型。

适用于 . 的 java.util.concurrent.locks.Lock.lockInterruptibly()Java 文档

本页的某些部分是根据 Android 开放源代码项目创建和共享的工作进行的修改,并根据 Creative Commons 2.5 属性许可证中所述的术语使用。

适用于