一、JUC中的Semaphore(信号量)
1、Semaphore简介
Semaphore(信号量)
为多线程协作提供了更为强大的控制方法,前面的我们学了synchronized、重入锁ReentrantLock
,这两种锁一次都只能允许一个线程访问一个资源,而信号量可以控制有多少个线程可以同时访问特定的资源。
2、Semaphore常用场景:限流
举个例子:
比如有个停车场,有5个空位,门口有个门卫,手中5把钥匙分别对应5个车位上面的锁,来一辆车,门卫会给司机一把钥匙,然后进去找到对应的车位停下来,出去的时候司机将钥匙归还给门卫。停车场生意比较好,同时来了100辆车,门卫手中只有5把钥匙,同时只能放5辆车进入,其他车只能等待,等有人将钥匙归还给门卫之后,才能让其他车辆进入。
上面的例子中门卫就相当于Semaphore,车钥匙就相当于许可证,车就相当于线程。