Java中CountDownLatch工具類詳細解析
Java中CountDownLatch工具類詳細解析
創(chuàng)建CountDownLatch對象時,會傳入一個count數(shù)值,該對象每次調(diào)用countDown()方法會使count -- ,就是count每次減1; 調(diào)用await()方法,程序會阻塞等待,當(dāng)count被減到0了之后,await()后面的程序解除阻塞,可以繼續(xù)運行。 阻塞的是調(diào)用await()方法的后續(xù)代碼,調(diào)用countDown()方法count自減1,當(dāng)count=0 時解除阻塞。 如:
CountDownLatch countDownLatch = new CountDownLatch(4); //初始 count = 4 countDownLatch.countDown(); // count = 4 -1; countDownLatch.countDown(); // count = 3-1; countDownLatch.await(); //當(dāng)count =0 ,可以執(zhí)行后續(xù)代碼
代碼示例1: 當(dāng)count不為0時,程序會一直等待。
import java.util.concurrent.CountDownLatch; public class Test { public static void main(String[] args) throws InterruptedException { CountDownLatch countDownLatch = new CountDownLatch(5); new Thread(new Runnable() { @Override public void run() { System.out.println(Thread.currentThread().getName()+"已運行!"); countDownLatch.countDown(); } }).start(); countDownLatch.await(); System.out.println(" 程序執(zhí)行完畢! "); } }
代碼示例2:count=0解除阻塞。
import java.util.concurrent.CountDownLatch; public class Test1 { public static void main(String[] args) throws InterruptedException { CountDownLatch countDownLatch = new CountDownLatch(5); for(int i = 0 ; i < 5 ; i++){ new Thread(new Runnable() { @Override public void run() { System.out.println(Thread.currentThread().getName()+"已運行!"); countDownLatch.countDown(); } }).start(); } countDownLatch.await(); System.out.println(" 程序執(zhí)行完畢! "); } }
到此這篇關(guān)于Java中CountDownLatch工具類詳細解析的文章就介紹到這了,更多相關(guān)CountDownLatch工具類內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
IDEA創(chuàng)建Maven項目后報錯不出現(xiàn)src文件夾的情況解決
最近剛開始學(xué)習(xí)maven,正準(zhǔn)備使用idea創(chuàng)建一個maven項目練手,卻發(fā)現(xiàn)自己創(chuàng)建的maven項目始終沒有src目錄,下面這篇文章主要給大家介紹了關(guān)于IDEA創(chuàng)建Maven項目后報錯不出現(xiàn)src文件夾的情況解決,需要的朋友可以參考下2023-05-05Spring中數(shù)據(jù)訪問對象Data Access Object的介紹
今天小編就為大家分享一篇關(guān)于Spring中數(shù)據(jù)訪問對象Data Access Object的介紹,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧2019-01-01Lombok同時使?@Data和@Builder踩坑總結(jié)
這篇文章主要介紹了Lombok同時使?@Data和@Builder踩坑總結(jié),文章圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值需要的小伙伴可以參考一下,希望對你的學(xué)習(xí)有所幫助2022-05-05Java實現(xiàn)飛機航班管理系統(tǒng)的思路詳解
這篇文章主要介紹了Java實現(xiàn)飛機航班管理系統(tǒng)的思路詳解,本文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-07-07Java 數(shù)據(jù)結(jié)構(gòu)中二叉樹前中后序遍歷非遞歸的具體實現(xiàn)詳解
樹是一種重要的非線性數(shù)據(jù)結(jié)構(gòu),直觀地看,它是數(shù)據(jù)元素(在樹中稱為結(jié)點)按分支關(guān)系組織起來的結(jié)構(gòu),很象自然界中的樹那樣。樹結(jié)構(gòu)在客觀世界中廣泛存在,如人類社會的族譜和各種社會組織機構(gòu)都可用樹形象表示2021-11-11