多线程之Semaphore详解(七)

上篇博客我们详细的介绍了一下CyclicBarrier,这篇博客我们详细的介绍Semaphore。

什么是Semaphore

semaphore从字面含义理解是信号量,它是JUC包中比较常用的一个类,它也是AQS共享模式的一个实现。信号量主要用于两个目的,一个是用于多个共享资源的互斥使用,另一个用于并发线程数的控制。利用它可以很好地实现流程控制。利用Semaphore可以实现各种池,例如:Hystrix的semaphore模式就是利用它实现。

Semaphore实例讲解

我们模式一个停车场停车信号,假设停车场只有3个空的停车位,现在有5辆车要停车。一开始3个车位都是空的,这时如果同时来了3辆车,看门人允许它们进入停车场,然后放下车拦。以后来的车必须在入口等待,直到停车场中有车辆离开。这时,如果有一辆车离开停车场,看门人得知后,打开车拦,放入一辆,如果又离开一辆,则又可以放入一辆,如此往复。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章