首先我們看乙個普通的多執行緒**
class mythread implements在執行main方法後,輸出如下,這是隨機的,每次可能不同。也就是說,我們最後想輸出的「執行緒執行完畢」沒有最後執行,這並不是我們的本意,所以,這裡我們想到countdownlatch類,對上面的**稍作修改runnable
}public
class
testcountdownlatch
修改後**:
class mythread implementsrunnable
@override
public
void
run()
}public
class
testcountdownlatch
countdownlatch latch = new countdownlatch(2);數值2,代表這裡申明2個執行緒
latch.await();await方法為等待,等待上面執行完成後才會執行下面的**latch.countdown();countdown方法為減減操作
我們再次執行如下:
我們發現,不管執行多少次,「執行緒執行完畢」都是最後執行,這就實現了多執行緒的同步操作。
CountDownLatch工具類介紹
countdownlatch是乙個同步工具類,它允許乙個或多個執行緒處於等待狀態直到在其它執行緒中執行的一組操作完成為止。countdownlatch用乙個給定的計數來實現初始化。await方法會一直處於阻塞狀態,直到countdown方法呼叫而使當前計數達到零。當計數為零之後,所有處於等待的執行緒...
同步輔助類CountDownLatch
問題 前段時間寫乙個多執行緒的爬蟲程式,要求在所有爬蟲執行緒執行結束後,執行資料庫插入操作。所以就要知道那些爬蟲執行緒什麼時候能夠全部停止。解決 1 按照以往的我的寫法,我習慣用thread類的activecount 方法,這個方法能夠返回當前執行緒組裡活動執行緒的數量。比如我開5個執行緒,加上主線...
CountDownLatch類的分析
countdownlatch 實現 乙個或多個執行緒 等待 其他一組執行緒的操作執行完成。1 內部類 sync extends abstractqueuedsynchronizer 繼承了aqs,並實現了tryacquireshared,tryreleaseshared方法,同時擁有構造方法 syn...