Semaphore类

一 说明

java.util.concurrent.Semaphore.

这是java提供的对信号量的支持类.

信号量是用来对某一共享资源所能访问的最大个数进行控制.

二 主要方法

acquire(): 申请一个许可证书,如果没有可用的许可证书的话,就一直等着,在等待过程中可以被中断.

acquire(int permits): 申请permits个许可证书.

acquireUninterruptibly(): 与acquire()方的区别是,线程等待的时候无法被中断.

acquireUninterruptibly(int permits): 申请permits个许可证书.

release(): 释放一个证书.

release(int permits): 释放permits个证书.

boolean tryAcquire(): 尝试获取一个证书.这个方法不会阻塞,而是马上返回,通过返回值可以判断是否获取成功,即这个方法可以看成是acquire()方法的异步版本.

boolean tryAcquire(long timeout, TimeUnit unit): 与tryAcquire(): 尝试获取一个证书,如果没有成功,它会尝试一段时间.

boolean tryAcquire(int permits)

boolean tryAcquire(int permits, long timeout, TimeUnit unit)

isFair(): 唤醒等待线程的策略是否公平的(FIFO).

boolean hasQueuedThreads(): 是否有线程在等待.

int getQueueLength(): 等待线程的数量.

三 重要属性

1) permits: 许可证数量. 包括许可证总数量, 可用的许可证数量.

2) queue: 等待线程队列, 用于存放等待线程.

3) fair: 等待线程的调度策略(是否公平), 是否是FIFO.

四 使用场景

留待以后补充.

发表评论

电子邮件地址不会被公开。 必填项已用*标注

您可以使用这些HTML标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>