Semaphore
两个作用:
1多个共享资源的互斥使用
2并发线程数量的控制
常用于限制可以访问某些资源的线程数量,例如通过 Semaphore 限流。
方法:
acquire()
release()
Semaphore中包含初始化时固定个数的许可,在进行操作的时候,需要先acquire获取到许可,才可以继续执行任务
处理完成之后需要release释放。
案例:
public class SemaText {
public static void main(String[] args) {
Semaphore semaphore =new Semaphore(3); // 限制数量
for (int i = 1; i < 7; i++) {
new Thread(()->{
try {
semaphore.acquire();
System.out.println(Thread.currentThread().getName()+"号车抢到车位");
TimeUnit.SECONDS.sleep(3);
} catch (InterruptedException e) {
e.printStackTrace();
}finally {
semaphore.release();
System.out.println(Thread.currentThread().getName()+"离开了车位");
}
},String.valueOf(i)).start();
}
}
}