多線程之Semaphore詳解(七)

上篇博客我們詳細的介紹了一下CyclicBarrier,這篇博客我們詳細的介紹Semaphore。

什麼是Semaphore

semaphore從字面含義理解是信號量,它是JUC包中比較常用的一個類,它也是AQS共享模式的一個實現。信號量主要用於兩個目的,一個是用於多個共享資源的互斥使用,另一個用於併發線程數的控制。利用它可以很好地實現流程控制。利用Semaphore可以實現各種池,例如:Hystrix的semaphore模式就是利用它實現。

Semaphore實例講解

我們模式一個停車場停車信號,假設停車場只有3個空的停車位,現在有5輛車要停車。一開始3個車位都是空的,這時如果同時來了3輛車,看門人允許它們進入停車場,然後放下車攔。以後來的車必須在入口等待,直到停車場中有車輛離開。這時,如果有一輛車離開停車場,看門人得知後,打開車攔,放入一輛,如果又離開一輛,則又可以放入一輛,如此往復。


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