執行緒同步之Semaphore

2021-08-04 10:30:06 字數 552 閱讀 5134

之前和大家分享過countdownlatch和cyclicbarrier

*****=相關鏈結*****

下面說個場景,例如我有乙個資源,只想讓2個執行緒訪問,當乙個執行緒釋放了資源,其他執行緒才可以有機會訪問這個資源,這樣的場景用之前的執行緒同步工具好像都不太好使,所以這裡給大家介紹乙個新的工具semaphore,廢話不說直接上**

public class semaphoredemo  catch (interruptedexception e) 

system.out.println(thread.currentthread().getname()+" end");

semaphore.release();//釋放資源}};

for (int i = 0; i < 10; i++) catch (interruptedexception e)

} }

}

**很好理解,首先構造這個類,引數說明看注釋,之後鎖定資源,釋放資源

大家可以拷**試一試,這個訊號量semaphore不難理解,就不多說了

執行緒同步之訊號量Semaphore

訊號量是核心物件,它允許多個執行緒在同乙個時刻訪問同乙個共享資源,但是需要限制在同一時刻訪問此共享資源的最大執行緒數量。在建立訊號量時,要指定允許的最大資源計數和當前可用的資源數。一般將當前可用資源數設定為最大資源數,每增加乙個執行緒對共享資源的訪問,當前可用資源數減1。當可用資源計數減小到0時,則...

C 多執行緒同步之Semaphore 訊號量

一 當多個執行緒對同一資源進行使用時,會產生 爭奪 的情況,為了避免這種情況的產生,也就出現了執行緒間的同步這個技術,本篇博文中將介紹使用訊號量semaphore達到執行緒間同步的目的。二 相關函式和標頭檔案 標頭檔案 include 建立訊號量api handle winapi createsem...

java執行緒同步 訊號量(Semaphore)

訊號量是一種計數器,用來保護乙個或者多個共享資源的訪問,它是併發程式設計的一種基礎工具。訊號量通過計數器的方式來對資源進行訪問控制 當其計數器值大於0時,表示有資源可以訪問 當其計數器值等於0時,執行緒將進入休眠狀態直到計數器值大於0 通過訊號量的建構函式指定資源數量 private final s...