Semaphore 是 synchronized 的加強版,作用是控制線程的並發數量。
關於信號量Semaphore的acquire與release的說明
1、Semaphore信號量作為一種流控手段,可以對特定資源的允許同時訪問的操作數量進行控制,例如池化技術(連接池)中的並發數,有界阻塞容器的容量等。
2、Semaphore中包含初始化時固定個數的許可,在進行操作的時候,需要先acquire獲取到許可,才可以繼續執行任務,如果獲取失敗,則進入阻塞;處理完成之后需要release釋放許可。
3、acquire與release之間的關系:在實現中不包含真正的許可對象,並且Semaphore也不會將許可與線程關聯起來,因此在一個線程中獲得的許可可以在另一個線程中釋放。可以將acquire操作視為是消費一個許可,而release操作是創建一個許可,Semaphore並不受限於它在創建時的初始許可數量。也就是說acquire與release並沒有強制的一對一關系,release一次就相當於新增一個許可,許可的數量可能會由於沒有與acquire操作一對一而導致超出初始化時設置的許可個數。