J.U.C系列(一)CountDownLatch的使用
生活随笔
收集整理的這篇文章主要介紹了
J.U.C系列(一)CountDownLatch的使用
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
CountDownLatch
它是用來控制一個或者多個線程等待多個線程。
它的實現(xiàn)原理是內(nèi)部使用了一個ctn的計數(shù)器,當(dāng)調(diào)用countDown()方法的時候計數(shù)器就執(zhí)行減1操作直到減到0的的時候那些之前調(diào)用await()方法而在等待的線程就會被喚醒。
有一個場景可以很好理解這個關(guān)鍵字的使用:火箭發(fā)射案例。火箭發(fā)射的時候需要每個子程序都準(zhǔn)備好才能發(fā)射,如何做到讓各個子程序異步的去執(zhí)行自己的程序然后都準(zhǔn)備完成再發(fā)射火箭呢?
demo如下
運行結(jié)果如下:
發(fā)射程序開始準(zhǔn)備... pool-1-thread-1 開始處理子程序... pool-1-thread-1 處理時間為:8s pool-1-thread-2 開始處理子程序... pool-1-thread-2 處理時間為:9s pool-1-thread-5 開始處理子程序... pool-1-thread-4 開始處理子程序... pool-1-thread-3 開始處理子程序... pool-1-thread-4 處理時間為:8s pool-1-thread-5 處理時間為:2s pool-1-thread-3 處理時間為:7s pool-1-thread-5 準(zhǔn)備就緒!!! pool-1-thread-3 準(zhǔn)備就緒!!! pool-1-thread-1 準(zhǔn)備就緒!!! pool-1-thread-4 準(zhǔn)備就緒!!! pool-1-thread-2 準(zhǔn)備就緒!!! 發(fā)射倒計時:10 發(fā)射倒計時:9 發(fā)射倒計時:8 發(fā)射倒計時:7 發(fā)射倒計時:6 發(fā)射倒計時:5 發(fā)射倒計時:4 發(fā)射倒計時:3 發(fā)射倒計時:2 發(fā)射倒計時:1 點火!!!總結(jié)
以上是生活随笔為你收集整理的J.U.C系列(一)CountDownLatch的使用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何理解java中String的不可变性
- 下一篇: BigDecimal的使用说明