2015-03-02 36 views
-3

我讀過關於Semaphorethere現在我想了解的是如何在實際代碼中使用該類?信號量的有用性是什麼?我得到了可以使用信號量的事情,以提高性能,降低資源的併發性。它是Semaphore的主要用途嗎?在哪裏使用信號量?

+0

可能重複[什麼是信號量?](http://stackoverflow.com/questions/34519/what-is-a-semaphore)我的意思是,它包括一些關於「在哪裏」使用它的例子。 – 2015-03-02 09:05:08

+0

信號量是同步進程的資源,除非您創建兩個或更多進程,否則應該忘記信號量。 – Cebrian92 2015-03-02 09:05:23

+0

如果您需要在應用程序中使用併發性,但希望在資源可訪問時以及您希望擁有的資源同時訪問多少次時自行處理,則應開始考慮信號量。 – lateralus 2015-03-02 09:07:16

回答

1

tl; dr答案:信號量允許您限制對某些線程的某些代碼路徑的訪問 - 而不控制處理這些線程的機制。示例用例是一項提供一些資源密集型任務的Web服務 - 使用Semaphore,您可以將該任務限制爲5個線程,而使用應用服務器的較大線程池處理此類請求和其他類型的請求。

長答案:請參閱Furkan Omay的評論。

1

信號量是java中的併發包的一部分。正如軟件包所言,它用於利用併發訪問代碼的流程。與使用信號量的Java中的「同步」和「鎖定」不同,您可以控制代碼對一定數量用戶的訪問。

把它當作酒吧裏的保鏢來允許人們進入或不進入。如果酒吧已滿,無法再帶人,他會停下來,直到有人離開。信號量可以用來對你的代碼做這樣的事情!

希望它有幫助!