ILock.TryLock 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
重载
| 名称 | 说明 |
|---|---|
| TryLock() |
仅当在调用时处于空闲状态时,才获取该锁。 |
| TryLock(Int64, TimeUnit) |
如果锁定在给定的等待时间内可用,并且当前线程尚未中断 Thread#中断,则获取该锁。 |
TryLock()
仅当在调用时处于空闲状态时,才获取该锁。
[Android.Runtime.Register("tryLock", "()Z", "GetTryLockHandler:Java.Util.Concurrent.Locks.ILockInvoker, Mono.Android, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null")]
public bool TryLock();
[<Android.Runtime.Register("tryLock", "()Z", "GetTryLockHandler:Java.Util.Concurrent.Locks.ILockInvoker, Mono.Android, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null")>]
abstract member TryLock : unit -> bool
返回
true 如果获取了锁, false 则为
- 属性
注解
仅当在调用时处于空闲状态时,才获取该锁。
获取锁(如果可用),并立即返回值 true。 如果锁不可用,此方法将立即返回值 false。
此方法的典型用法成语是:
{@code
Lock lock = ...;
if (lock.tryLock()) {
try {
// manipulate protected state
} finally {
lock.unlock();
}
} else {
// perform alternative actions
}}
此用法可确保锁定是在获取锁时解锁的,如果未获取锁,则不会尝试解锁。
Java文档java.util.concurrent.locks.Lock.tryLock()。
本页的某些部分是根据 创建和共享的工作进行的修改,并根据 许可证中所述的条款使用。
适用于
TryLock(Int64, TimeUnit)
如果锁定在给定的等待时间内可用,并且当前线程尚未中断 Thread#中断,则获取该锁。
[Android.Runtime.Register("tryLock", "(JLjava/util/concurrent/TimeUnit;)Z", "GetTryLock_JLjava_util_concurrent_TimeUnit_Handler:Java.Util.Concurrent.Locks.ILockInvoker, Mono.Android, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null")]
public bool TryLock(long time, Java.Util.Concurrent.TimeUnit? unit);
[<Android.Runtime.Register("tryLock", "(JLjava/util/concurrent/TimeUnit;)Z", "GetTryLock_JLjava_util_concurrent_TimeUnit_Handler:Java.Util.Concurrent.Locks.ILockInvoker, Mono.Android, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null")>]
abstract member TryLock : int64 * Java.Util.Concurrent.TimeUnit -> bool
参数
- time
- Int64
等待锁的最长时间
- unit
- TimeUnit
参数的时间单位time
返回
true 如果获取了锁,并且 false 获取锁之前等待的时间是否已过
- 属性
例外
如果当前线程在获取锁时中断(并且支持锁定获取中断)
注解
如果锁定在给定的等待时间内可用,并且当前线程尚未中断 Thread#中断,则获取该锁。
如果锁可用,此方法将立即返回值 true。 如果锁不可用,则当前线程出于线程计划目的被禁用,并处于休眠状态,直到发生三件事之一:ul>li 锁是由当前线程获取的;或者 li>其他线程 Thread#中断中断当前线程,并且支持锁定获取中断;或 <<li>指定的等待时间已过 </ul><<>
如果获取锁,则返回该值 true 。
如果当前线程:<ul><li 在进入此方法时设置了中断状态;或者 <li>>是在获取锁时中断的 Thread#中断,并且支持锁定获取中断,则会InterruptedException引发 /ul>,<并清除当前线程中断的状态。
如果指定的等待时间已过,则返回该值 false 。 如果时间小于或等于零,则该方法根本不会等待。
<b>实现注意事项</b>
在某些实现中中断锁获取的能力可能是不可能的,如果可能,可能是一项昂贵的操作。 程序员应注意这种情况。 实现应在这种情况发生时记录。
实现有利于响应中断,而常规方法返回,或报告超时。
Lock实现可能能够检测锁的错误使用,例如导致死锁的调用,并可能在此类情况下引发(未选中)异常。 该实现必须记录 Lock 情况和异常类型。
Java文档java.util.concurrent.locks.Lock.tryLock(long, java.util.concurrent.TimeUnit)。
本页的某些部分是根据 创建和共享的工作进行的修改,并根据 许可证中所述的条款使用。