countdownlatch 介紹
countdownlatch 是用於等待執行緒的執行,等待執行緒數量為 0 後,則結束等待,執行該執行緒等待後所要執行的**。
例子如下:
private static countdownlatch cadownlatch = new countdownlatch(2);
public static void main(string args) catch (interruptedexception e)
system.out.println("其它兩個執行緒執行結束");
system.out.println("執行緒" + thread.currentthread().getname() + "結束");
};}.start();
new thread() catch (interruptedexception e)
cadownlatch.countdown();
};}.start();
new thread() catch (interruptedexception e)
cadownlatch.countdown();
};}.start();
}
執行結果為:
執行緒thread-0開始countdownlatch 原始碼分析執行緒thread-0等待其它兩個執行緒執行結束
執行緒thread-1執行
執行緒thread-2執行
其它兩個執行緒執行結束
執行緒thread-0結束
countdownlatch 內部通過標記和阻塞執行緒和喚醒執行緒來實現功能。
首先分析 await() 方法:
public void await() throws interruptedexception
public final void acquiresharedinterruptibly(int arg)
throws interruptedexception
private void doacquiresharedinterruptibly(int arg)
throws interruptedexception
} finally
}
接下來看 countdown() 方法:
public void countdown()
public final boolean releaseshared(int arg)
return false;
}private void doreleaseshared()
// ...
}// ...
}}
java併發程式設計之CountDownLatch
countdownlatch 主要是作用是用來維護乙個執行緒控制多個執行緒,內部是通過乙個計數器實現的,當我們建立乙個countdownlatch物件的時候,就需要指定乙個數值,這個數值就表示了執行緒的數量,每當乙個執行緒任務執行完畢,計數器就會減 1,當計數器的值變為0時,就表示所有的執行緒都已經...
java執行緒同步之CountDownLatch
1 類說明 jdk的concurrent包中的countdownlatch類是乙個執行緒同步的輔助類,它使得執行緒可以一直等待在其它執行緒中執行的操作,直到此操作結束。countdownlatch在初始化的時候指定乙個大小值n,呼叫countdownlatch的await方法的執行緒會陷入等待之中,...
併發程式設計學習 併發程式設計的挑戰
死鎖 資源限制的挑戰 併發程式設計的目的是為了讓程式執行的更快,但是並不是啟動更多的執行緒,就能讓程式最大限度的併發執行。在進行併發程式設計時,如果希望通過多執行緒執行任務讓程式執行的更快,會面臨非常多的挑戰,比如上下文切換的問題,死鎖的問題,以及受限於硬體和軟體的資源限制問題 即使是單核處理器也支...