java命名空间java.util.concurrent类semaphore的类成员方法:
acquire定义及介绍
本文导语:
acquire
public void acquire(int permits)
throws interruptedexception
从此信号量获取给定数目的许可,在提供这些许可前一直将线程阻塞,或者线程已被中断。
获取给定数目的许可(如果提供了)并立即返回,将可用的许可数减...
acquire
public void acquire(int permits)
throws interruptedexception
- 从此信号量获取给定数目的许可,在提供这些许可前一直将线程阻塞,或者线程已被中断。
获取给定数目的许可(如果提供了)并立即返回,将可用的许可数减去给定的量。
如果没有足够的可用许可,则在发生以下两种情况之一前,禁止将当前线程用于线程安排目的并使其处于休眠状态:
- 其他某些线程调用此信号量的某个
释放
方法,当前线程是下一个被分配允许的线程并且可用许可的数目满足此请求;或者
- 其他某些线程中断当前线程。
如果当前线程:
- 被此方法将其已中断状态设置为 on ;或者
- 在等待许可时被中断。
则抛出 interruptedexception
,并且清除当前线程的已中断状态。任何原本应该分配给此线程的许可将被分配给其他试图获取许可的线程,就好像已通过调用 release()
而使许可可用一样。
- 参数:
permits
- 要获取的许可数
- 抛出:
interruptedexception
- 如果当前线程已被中断
illegalargumentexception
- 如果 permits
为负