Semaphore
翻译:
信号量
解释:
- 信号量通常用于限制线程数,而不是访问某些(物理或逻辑)资源。 例如,这是一个使用信号量来控制对一个项目池的访问的类
用法
可以限制线程的使用次数
public static void main(String[] args) {
//限制线程数量为3
Semaphore semaphore = new Semaphore(3);
for (int i = 0; i < 6 ; i++) {
new Thread(() ->{
//获取资源
try {
semaphore.acquire();
} catch (InterruptedException e) {
throw new RuntimeException(e);
}finally {
semaphore.release();
}
System.out.println("进来了"+Thread.currentThread().getName());
},String.valueOf(i)).start();
}
}
- 限制数量是3,表示如果不释放资源的情况下只能一次运行三个进程,但是我们每次都释放了资源,所以并没有出现明显的区别