ReentrantLock.TryLock 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
重载
| 名称 | 说明 |
|---|---|
| TryLock() |
仅在调用时不由另一个线程持有该锁时才获取该锁。 |
| TryLock(Int64, TimeUnit) |
如果在给定的等待时间内未由另一个线程持有该锁,并且当前线程尚未中断 Thread#中断,则获取该锁。 |
TryLock()
仅在调用时不由另一个线程持有该锁时才获取该锁。
[Android.Runtime.Register("tryLock", "()Z", "GetTryLockHandler")]
public virtual bool TryLock();
[<Android.Runtime.Register("tryLock", "()Z", "GetTryLockHandler")>]
abstract member TryLock : unit -> bool
override this.TryLock : unit -> bool
返回
true如果锁可用且由当前线程获取,或者该锁已由当前线程持有,则为否则false
实现
- 属性
注解
仅在调用时不由另一个线程持有该锁时才获取该锁。
如果锁不由另一个线程持有,并立即返回该值 true,则获取该锁,并将锁保留计数设置为 1。 即使此锁已设置为使用公平排序策略, tryLock()<调用 em>将</em> 将立即获取锁(如果它可用),无论其他线程当前是否正在等待锁。 此 ”barging”行为在某些情况下可能很有用,即使它打破公平性。 如果要遵守此锁的公平性设置,请使用 #tryLock(long, TimeUnit) tryLock(0, TimeUnit.SECONDS) 几乎等效的(它还检测到中断)。
如果当前线程已保存此锁,则保留计数递增一个,该方法返回 true。
如果锁由另一个线程持有,则此方法将立即返回值 false。
Java文档java.util.concurrent.locks.ReentrantLock.tryLock()。
本页的某些部分是根据 创建和共享的工作进行的修改,并根据 许可证中所述的条款使用。
适用于
TryLock(Int64, TimeUnit)
如果在给定的等待时间内未由另一个线程持有该锁,并且当前线程尚未中断 Thread#中断,则获取该锁。
[Android.Runtime.Register("tryLock", "(JLjava/util/concurrent/TimeUnit;)Z", "GetTryLock_JLjava_util_concurrent_TimeUnit_Handler")]
public virtual bool TryLock(long timeout, Java.Util.Concurrent.TimeUnit? unit);
[<Android.Runtime.Register("tryLock", "(JLjava/util/concurrent/TimeUnit;)Z", "GetTryLock_JLjava_util_concurrent_TimeUnit_Handler")>]
abstract member TryLock : int64 * Java.Util.Concurrent.TimeUnit -> bool
override this.TryLock : int64 * Java.Util.Concurrent.TimeUnit -> bool
参数
- timeout
- Int64
等待锁的时间
- unit
- TimeUnit
超时参数的时间单位
返回
true 如果锁可用且由当前线程获取,或者该锁已由当前线程持有,则为如果 false 锁定之前经过的等待时间可以获取
实现
- 属性
例外
如果当前线程中断
如果时间单位为 null,则为
注解
如果在给定的等待时间内未由另一个线程持有该锁,并且当前线程尚未中断 Thread#中断,则获取该锁。
如果锁不由另一个线程持有,并立即返回该值 true,则获取该锁,并将锁保留计数设置为 1。 如果此锁已设置为使用公平排序策略,则如果任何其他线程正在等待锁,则不会/em 获取可用的锁 <em>>。< 这与 #tryLock() 方法形成鲜明对比。 如果想要允许对公平锁进行禁止的计时, tryLock 则将计时和未计时的表单合并在一起:
{@code
if (lock.tryLock() ||
lock.tryLock(timeout, unit)) {
...
}}
如果当前线程已保存此锁,则保留计数递增一个,该方法返回 true。
如果锁由另一个线程持有,则当前线程出于线程计划目的被禁用,并处于休眠状态,直到发生以下三种情况之一:
<ul>
<li>此锁由当前线程获取;或
<li>其他一些线程 Thread#中断中断当前线程;或
<li>指定的等待时间已用
</ul>
如果获取锁,则返回该值 true ,并将锁保留计数设置为 1。
如果当前线程:
<ul>
<li>在进入此方法时设置了中断状态;或
<li>是线程#中断在获取锁时中断的,
<然后InterruptedException引发 /ul>,并清除当前线程的中断状态。
如果指定的等待时间已过,则返回该值 false 。 如果时间小于或等于零,则该方法根本不会等待。
在此实现中,由于此方法是显式中断点,因此优先于响应对锁的正常或重新进入获取的中断,并报告等待时间的运行时间。
Java文档java.util.concurrent.locks.ReentrantLock.tryLock(long, java.util.concurrent.TimeUnit)。
本页的某些部分是根据 创建和共享的工作进行的修改,并根据 许可证中所述的条款使用。