併發編程--資源併發訪問信號量

如果線程要訪問一個共享資源,它必須先獲得信號量。如果信號量的內部計數器大於0,信號量將減1,然後允許訪問這個共享資源,計數器大於0意味着有可以使用的資源。因此線程將被允許訪問使用其中一個資源。如果信號量的計數器等於0,信號量將會把線程置入休眠直至計數器大於0,計數器等於0的時候以爲着所有共享資源已經被其他線程使用了,所以需要訪問這個共享資源的線程必須等待。當線程使用完這個共享資源後,信號量必須被釋放,以便其他線程能夠訪問這個共享資源。釋放資源後信號量計數器加1。



運行結果查看:


信號量可以很好的實現線程間同步,信號量的創建只需要new Semaphore即可,有兩個參數,一個參數是必須要寫的,就是信號量計數器大小,即允許運行多少個線程,另外一個參數可選,跟信號量的公平性有關。從運行結果可以看出信號量可以防止線程衝突。創建的兩個線程每次只能有一個線程執行print方法。

發佈了65 篇原創文章 · 獲贊 4 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章