转自:
下文笔者讲述java中Semaphore类的详解说明,如下所示:
Semaphore简介
Semaphore(中文翻译:信号量) 我们常用于控制访问某一资源的线程个数, 使用这种方式可使大家按照一定的规则访问某一资源 Semaphore的原理: 通过使用计数器来控制对某一资源的访问 当计数器大于0,则允许访问 当计数器为0时,则拒绝访问 计数器中的计数作为允许访问共享资源的许可 即:访问资源,需从信号量中授予线程许可
Semaphore方法
方法名 | 备注 |
void acquire() | 从信号量获取一个许可,在无可用许可前,将一直阻塞等待 |
void acquire(int permits) | 获取指定数目的许可,在无可用许可前,也将会一直阻塞等待 |
boolean tryAcquire() | 从信号量尝试获取一个许可,当无可用许可,直接返回false,不会阻塞 |
boolean tryAcquire(int permits) | 尝试获取指定数目的许可,当无可用许可直接返回false |
boolean tryAcquire(int permits, long timeout, TimeUnit unit) | 在指定的时间内尝试从信号量中获取许可,当在指定的时间内获取成功,返回tr |