理解:就是要给令牌池,可获取信号量(令牌或者许可)、放入信号量。常用于控制并发的线程数,也可用于池类资源的访问控制。
构造方法
Semaphore(int permits)
:指定初始许可数
Semaphore(int permits , boolean fair)
:指定是否公平模式
尝试获取许可
boolean tryAcquire(long timeout , TimeUnit unit)
boolean tryAcquire(int permits)
boolean tryAcquire(int permits, long timeout , TimeUnit unit)
获取许可
void acquire() throws InterruptedException;
:获取1个许可,可中断
void acquire(int permits) throws InterruptedException;
:获取指定数量的许可,可中断
void acquireUninterruptibly()
:获取1个许可,不可中断
void acquireUninterruptibly(int permits)
int drainPermits()
:获取当前所有可用的
放入许可
void release()
:放入1个
void release(int permits)
:放入多个
其它API
boolean isFair()
int availablePermits
boolean hasQueuedThreads()
int getQueueLength()
Collection<Thread> getQueuedThreads()
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://blog.csdn.net/u014427391/article/details/121614108
内容来源于网络,如有侵权,请联系作者删除!