適用場景:
countdownlatch和cyclicbarrier都是jdk 1.5引入的,而phaser是jdk 1.7引入的。phaser的功能與countdownlatch和cyclicbarrier有部分重疊,同時也提供了更豐富的語義和更靈活的用法。
phaser顧名思義,與階段相關。phaser比較適合這樣一種場景,一種任務可以分為多個階段,現希望多個執行緒去處理該批任務,對於每個階段,多個執行緒可以併發進行,但是希望保證只有前面乙個階段的任務完成之後才能開始後面的任務。這種場景可以使用多個cyclicbarrier來實現,每個cyclicbarrier負責等待乙個階段的任務全部完成。但是使用cyclicbarrier的缺點在於,需要明確知道總共有多少個階段,同時並行的任務數需要提前預定義好,且無法動態修改。而phaser可同時解決這兩個問題。
例項:
publicclass
phaserdemo
}; for(
int i =
0; i < parties; i++)
});thread.start(); }
} }
執行結果:
thread
0, phase 0
thread
1, phase 0
thread
2, phase 0
*****= phase :
0 *****=
thread
2, phase 1
thread
0, phase 1
thread
1, phase 1
*****= phase :
1 *****=
thread
1, phase 2
thread
2, phase 2
thread
0, phase 2
*****= phase :
2 *****=
thread
0, phase 3
thread
1, phase 3
thread
2, phase 3
*****= phase :
3 *****=
從上面的結果可以看到,多個執行緒必須等到其它執行緒的同一階段的任務全部完成才能進行到下乙個階段,並且每當完成某一階段任務時,phaser都會執行其onadvance方法。
phaser主要介面如下
redis應用範圍及應用場景
redis remote dictionary service 遠端服務字典 是網際網路領域使用最廣泛的儲存中介軟體,包括的超高的效能 完美的文件 簡潔易懂的原始碼和豐富的客戶端庫支援在開源中介軟體領域廣受好評。1 快取 2 分布式鎖 hash 2 記錄帖子的標題 摘要 作者和封面資訊,用於列表頁的...
zookeeper應用場景及相關知識
zookeeper是乙個高可用的分布式資料管理與系統協調框架。基於對paxos演算法的實現,使該框架保證了分布式環境中資料的強一致性,也正是基於這樣的特性,使得zookeeper能夠應用於很多場景。網上對zk的使用場景也有不少介紹,本文將結合作者身邊的專案例子,系統的對zk的使用場景進行歸類介紹。值...
redis應用場景及產品定位
關鍵字 redis應用場景及產品定位 總結與memcached主要區別 redis memcached 複雜資料型別 單一資料型別 持久化策略 6種 非持久化 支援主從讀寫分離 配置簡單 集群存在單點問題 預定的記憶體大小 現申請記憶體 可以設定最大內側 記憶體滿t掉最早資料 記憶體滿t掉過期時間中...