Semaphore.Acquire 方法

定义

重载

名称 说明
Acquire()

从此信号灯获取许可证,直到有一个信号灯可用,或者线程被 Thread#中断中断。

Acquire(Int32)

从此信号灯获取给定数量的许可证,直到所有许可证都可用,或者线程被 Thread#中断中断。

Acquire()

从此信号灯获取许可证,直到有一个信号灯可用,或者线程被 Thread#中断中断。

[Android.Runtime.Register("acquire", "()V", "GetAcquireHandler")]
public virtual void Acquire();
[<Android.Runtime.Register("acquire", "()V", "GetAcquireHandler")>]
abstract member Acquire : unit -> unit
override this.Acquire : unit -> unit
属性

例外

如果当前线程中断

注解

从此信号灯获取许可证,直到有一个信号灯可用,或者线程被 Thread#中断中断。

获取许可证(如果可用)并立即返回,将可用许可证的数量减少一个。

如果没有可用许可证,则当前线程出于线程计划目的被禁用,并处于休眠状态,直到发生两件事之一:<ul<>li>其他线程调用#release此信号灯的方法,当前线程旁边将分配许可证;或者 <li>一些其他线程 Thread#中断中断当前线程。 </ul>

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

适用于 . 的 java.util.concurrent.Semaphore.acquire()Java 文档

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

适用于

Acquire(Int32)

从此信号灯获取给定数量的许可证,直到所有许可证都可用,或者线程被 Thread#中断中断。

[Android.Runtime.Register("acquire", "(I)V", "GetAcquire_IHandler")]
public virtual void Acquire(int permits);
[<Android.Runtime.Register("acquire", "(I)V", "GetAcquire_IHandler")>]
abstract member Acquire : int -> unit
override this.Acquire : int -> unit

参数

permits
Int32

获取许可证数

属性

例外

如果当前线程中断

如果 permits 为负数

注解

从此信号灯获取给定数量的许可证,直到所有许可证都可用,或者线程被 Thread#中断中断。

获取给定数量的许可证(如果可用),并立即返回,减少给定数量的可用许可证数。 此方法的效果与循环 for (int i = 0; i < permits; ++i) acquire(); 相同,只不过它以原子方式一次性获取许可证:

如果可用许可证不足,则当前线程出于线程计划目的被禁用,并处于休眠状态,直到发生两件事之一:<ul<>li>其他线程调用此信号灯的方法之一#release() release,当前线程旁边是分配许可证,可用许可证数满足此请求;或者 <li>一些其他线程 Thread#中断中断当前线程。 </ul>

如果当前线程:<ul><li>在进入此方法时设置了中断状态;或者 <li>是 Thread#interrupt 在等待允许时中断,<则会InterruptedException引发 /ul>,并清除当前线程的中断状态。 要分配给此线程的任何许可证将改为分配给尝试获取许可证的其他线程,就好像已通过调用 #release()获得许可证一样。

适用于 . 的 java.util.concurrent.Semaphore.acquire(int)Java 文档

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

适用于