1、概念:countdownlatch是乙個同步工具類,用來協調多個執行緒之間的同步,能夠使乙個執行緒在等待另外一些執行緒完成各自工作之後,再繼續執行,使用乙個計數器進行實現。計數器初始值為執行緒的數量,當每乙個執行緒完成自己任務後,計數器的值就會減一,當計數器的值為0時,表示所有的執行緒都已經完成一些任務,然後在countdownlatch上等待的執行緒就可以恢復執行接下來的任務。
2、不足:countdownlatch是一次性的,計算器的值只能在構造方法中初始化一次,之後沒有任何機制再次對其設定值,當countdownlatch使用完畢後,它不能再次被使用。
3、典型用法:
(1)某一線程在開始執行前等待n個執行緒執行完畢。將countdownlatch的計數器初始化為new countdownlatch(n),每當乙個任務執行緒執行完畢,就將計數器減1 countdownlatch.countdown(),當計數器的值變為0時,在countdownlatch上await()的執行緒就會被喚醒。乙個典型應用場景就是啟動乙個服務時,主線程需要等待多個元件載入完畢,之後再繼續執行。
(2)實現多個執行緒開始執行任務的最大並行性。注意是並行性,不是併發,強調的是多個執行緒在某一時刻同時開始執行。類似於賽跑,將多個執行緒放到起點,等待發令槍響,然後同時開跑。做法是初始化乙個共享的countdownlatch(1),將其計算器初始化為1,多個執行緒在開始執行任務前首先countdownlatch.await(),當主線程呼叫countdown()時,計數器變為0,多個執行緒同時被喚醒。
java多執行緒之CountDownLatch
countdownlatch是乙個同步工具類,用來協調多個執行緒之 間的同步。其能夠使 乙個執行緒在等待另外一些執行緒完成各自工作之後,再繼續執行。使用乙個計數器進行實現。計數器初始值為執行緒的數量。當每乙個執行緒完成自己任務後,計數器的值就會減一。當計數器的值為0時,表示所有的執行緒都已經完成了任...
多執行緒之倒計時器CountDownLatch及原理
這個工具通常用來控制線程等待,它可以讓某乙個執行緒等待直到倒計時結束再開始執行。countdownlatch是 共享模式 的。構造方法 countdownlatch int count count就是計數的次數 主要方法 void await 讓當前執行緒等待,直到倒計時結束 long getcou...
多執行緒 多執行緒原理
我們首先要知道什麼是多執行緒,說白了就是多個執行緒,執行緒是什麼呢,其實就是程序執行的途徑,那麼說道這裡我們又引入了乙個新的名字,就是程序,那麼我們來看看什麼是程序,其實我們自己也能看到,啟動電腦的任務管理器,我們就可以看到程序選項,裡面是我們電腦所有的程序,我們會發現有很多的程序.簡單地說就是程序...