上篇博客我们详细的介绍了一下CyclicBarrier,这篇博客我们详细的介绍Semaphore。
什么是Semaphore
semaphore从字面含义理解是信号量,它是JUC包中比较常用的一个类,它也是AQS共享模式的一个实现。信号量主要用于两个目的,一个是用于多个共享资源的互斥使用,另一个用于并发线程数的控制。利用它可以很好地实现流程控制。利用Semaphore可以实现各种池,例如:Hystrix的semaphore模式就是利用它实现。
Semaphore实例讲解
我们模式一个停车场停车信号,假设停车场只有3个空的停车位,现在有5辆车要停车。一开始3个车位都是空的,这时如果同时来了3辆车,看门人允许它们进入停车场,然后放下车拦。以后来的车必须在入口等待,直到停车场中有车辆离开。这时,如果有一辆车离开停车场,看门人得知后,打开车拦,放入一辆,如果又离开一辆,则又可以放入一辆,如此往复。
public<