21:Count Down設計模式
1.概述
Count-Down設計模式其實也叫做Latch(閥門)設計模式。當若干個執行緒併發執行完某個特定的任務,然後等到所有的子任務都執行結束之後再統一彙總。
2.JDK自帶CountDownLatch
public static void main(String[] args) throws InterruptedException {
//設定countdown為5
CountDownLatch countDownLatch = new CountDownLatch(5);
System.out.println("執行緒第一階段開始工作");
for(int i=0;i<5;i++) {
new Thread() {
@Override
public void run() {
try {
System.out.println(Thread.currentThread().getName());
Thread.sleep(100);
//計數器-1
countDownLatch.countDown();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}.start();
}
//直到計數器為0
countDownLatch.await();
System.out.println("階段一全部完成,第二階段開工");
}
列印結果:
執行緒第一階段開始工作
Thread-0
Thread-1
Thread-3
Thread-2
Thread-4
階段一全部完成,第二階段開工
3.自定義CountDownLatch
public class Latch {
//閥門值
private final int latchnum;
//計數器
private int count=0;
public Latch(int latchnum) {
this.latchnum=latchnum;
}
public void countDown() {
synchronized (this) {
this.count++;
this.notifyAll();
}
}
public void await() {
synchronized (this) {
if(count!=latchnum) {
try {
this.wait();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
}
相關文章
- GoLang設計模式21 - 裝飾模式Golang設計模式
- 簡述21種設計模式設計模式
- 設計模式(四)Singleton設計模式設計模式
- 設計模式----工廠設計模式設計模式
- Java設計模式——模板設計模式Java設計模式
- 設計模式-工廠設計模式設計模式
- 解說21種設計模式之第一篇_原型模式(物件建立型)設計模式原型物件
- 設計模式之單例設計模式設計模式單例
- 【設計模式】設計模式(一)-- 大話設計模式讀書筆記設計模式筆記
- 【設計模式】漢堡中的設計模式——策略模式設計模式
- 21個UI設計必會的設計技巧UI
- 設計模式----中介模式設計模式
- 設計模式-中介模式設計模式
- 設計模式(策略模式)設計模式
- 設計模式-代理模式設計模式
- 設計模式-策略模式設計模式
- 設計模式-模板模式設計模式
- 設計模式——模板模式設計模式
- 設計模式----代理模式設計模式
- 設計模式~代理模式設計模式
- 【設計模式】代理模式設計模式
- 設計模式——策略模式設計模式
- 設計模式——代理模式設計模式
- 一.設計模式之工廠設計模式設計模式
- 設計模式總結 —— 單例設計模式設計模式單例
- JavaScript設計模式初探--單例設計模式JavaScript設計模式單例
- JavaScript設計模式之建立型設計模式JavaScript設計模式
- 23種設計模式(八)-原型設計模式設計模式原型
- 23種設計模式(二)---策略設計模式設計模式
- Yii2設計模式——設計模式簡介設計模式
- Java設計模式系列之單例設計模式Java設計模式單例
- 淺識JAVA設計模式——單例設計模式Java設計模式單例
- JAVA設計模式之 13.命令設計模式Java設計模式
- 《Head First 設計模式》:與設計模式相處設計模式
- Java設計模式之介面卡設計模式Java設計模式
- 設計模式--原型模式及其程式設計思想設計模式原型程式設計
- 23種設計模式(七)-狀態設計模式設計模式
- 23種設計模式(四)- 模板方法設計模式設計模式