併發tools之柵欄CyclicBarrier

2021-08-29 22:37:33 字數 977 閱讀 5774

前言:

cyclicbarrier翻譯過來就是:迴圈的屏障,這個類是乙個可以重複利用的屏障類.

它允許一組執行緒相互等待,直到全部到達某個公共屏障點,然後所有的這組執行緒再同步往後執行.

await()函式每被呼叫依次,計數便會減少1,並阻塞當前執行緒.當計數減至0,阻塞解除.

countdownlatch和cyclicbarrier的區別?

1.countdownlatch的作用是允許1個執行緒等待其他執行緒執行完成之後,它才執行;

而cyclicbarrier則是允許n個執行緒相互等待到某個公共屏障點,然後這一組執行緒再同時執行.

2.countdownlatch的計數器的值無法被重置,這個初始值只能被設定一次,是不能夠重用的,

cyclicbarrier是可以重用的.

實戰:

public class cyclicbarrierdemo 

/*** 主任務

*/static class totaltask extends thread

}/**

* 子任務

*/static class billtask extends thread

public string getbillname()

public void setbillname(string billname)

public cyclicbarrier getbarrier()

public void setbarrier(cyclicbarrier barrier)

@override

public void run() catch (interruptedexception e) catch (brokenbarrierexception e) }}

}

執行結果:

併發tools之訊號量Semaphore

前言 訊號量可以控制某個資源可以被同時訪問的個數,通過建構函式設定一定數量的許可 呼叫acquire 獲取乙個許可,如果沒有就等待 呼叫release 釋放乙個許可 實戰 下面例子只允許 個執行緒同時進入執行acquire 和release 之間的 public class semaphoredem...

C 併發程式設計 記憶體柵欄

因為這類操作就像畫了一條任何 都無法跨越的線一樣,所以柵欄操作通常也被稱為 記憶體柵欄 memory barriers 使用柵欄的一般想法是 當乙個獲取操作能看到釋放柵欄操作後的儲存結果,那麼這個柵欄就與獲取操作同步 並且,當載入操作在獲取柵欄操作前,看到乙個釋放操作的結果,那麼這個釋放操作同步於獲...

Tools系列 之列印控制實現方法

date 2019 2 21 1 目的 通過日誌管理,實現統一的列印控制,可以控制實現是否列印以及不同的列印級別。好處在於避免重要資訊對外列印以及日誌資訊不受控制輸出,會出現刷屏現象,導致系統效能嚴重下降。2 基本思想 所有日誌列印通過日誌管理模組的介面進行管理,可以呼叫介面實現設定和獲取osa管理...