ILock.TryLock 方法

定义

重载

名称 说明
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)

本页的某些部分是根据 创建和共享的工作进行的修改,并根据 许可证中所述的条款使用。

适用于