Java中CountDownLatch工具類(lèi)詳細(xì)解析
Java中CountDownLatch工具類(lèi)詳細(xì)解析
創(chuàng)建CountDownLatch對(duì)象時(shí),會(huì)傳入一個(gè)count數(shù)值,該對(duì)象每次調(diào)用countDown()方法會(huì)使count -- ,就是count每次減1; 調(diào)用await()方法,程序會(huì)阻塞等待,當(dāng)count被減到0了之后,await()后面的程序解除阻塞,可以繼續(xù)運(yùn)行。 阻塞的是調(diào)用await()方法的后續(xù)代碼,調(diào)用countDown()方法count自減1,當(dāng)count=0 時(shí)解除阻塞。 如:
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時(shí),程序會(huì)一直等待。
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()+"已運(yùn)行!"); 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()+"已運(yùn)行!"); countDownLatch.countDown(); } }).start(); } countDownLatch.await(); System.out.println(" 程序執(zhí)行完畢! "); } }
到此這篇關(guān)于Java中CountDownLatch工具類(lèi)詳細(xì)解析的文章就介紹到這了,更多相關(guān)CountDownLatch工具類(lèi)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Java多線程中的CountDownLatch解析
- Java中的共享鎖CountDownLatch及源碼解析
- Java中CountDownLatch和CyclicBarrier的區(qū)別與詳解
- java使用CountDownLatch實(shí)現(xiàn)多線程協(xié)作
- Java多線程正確使用倒計(jì)時(shí)協(xié)調(diào)器CountDownLatch方法詳解
- 深度解析Java中CountDownLatch的原理
- 深入理解Java中的并發(fā)工具類(lèi)CountDownLatch
- 詳解Java并發(fā)工具類(lèi)之CountDownLatch和CyclicBarrier
相關(guān)文章
IDEA創(chuàng)建Maven項(xiàng)目后報(bào)錯(cuò)不出現(xiàn)src文件夾的情況解決
最近剛開(kāi)始學(xué)習(xí)maven,正準(zhǔn)備使用idea創(chuàng)建一個(gè)maven項(xiàng)目練手,卻發(fā)現(xiàn)自己創(chuàng)建的maven項(xiàng)目始終沒(méi)有src目錄,下面這篇文章主要給大家介紹了關(guān)于IDEA創(chuàng)建Maven項(xiàng)目后報(bào)錯(cuò)不出現(xiàn)src文件夾的情況解決,需要的朋友可以參考下2023-05-05Spring中數(shù)據(jù)訪問(wèn)對(duì)象Data Access Object的介紹
今天小編就為大家分享一篇關(guān)于Spring中數(shù)據(jù)訪問(wèn)對(duì)象Data Access Object的介紹,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2019-01-01Lombok同時(shí)使?@Data和@Builder踩坑總結(jié)
這篇文章主要介紹了Lombok同時(shí)使?@Data和@Builder踩坑總結(jié),文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值需要的小伙伴可以參考一下,希望對(duì)你的學(xué)習(xí)有所幫助2022-05-05Eclipse中自動(dòng)添加注釋?zhuān)▋煞N)
本文主要介紹了Eclipse中自動(dòng)添加注釋的兩種方法。具有很好的參考價(jià)值,下面跟著小編一起來(lái)看下吧2017-02-02Java實(shí)現(xiàn)飛機(jī)航班管理系統(tǒng)的思路詳解
這篇文章主要介紹了Java實(shí)現(xiàn)飛機(jī)航班管理系統(tǒng)的思路詳解,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-07-07Java 數(shù)據(jù)結(jié)構(gòu)中二叉樹(shù)前中后序遍歷非遞歸的具體實(shí)現(xiàn)詳解
樹(shù)是一種重要的非線性數(shù)據(jù)結(jié)構(gòu),直觀地看,它是數(shù)據(jù)元素(在樹(shù)中稱(chēng)為結(jié)點(diǎn))按分支關(guān)系組織起來(lái)的結(jié)構(gòu),很象自然界中的樹(shù)那樣。樹(shù)結(jié)構(gòu)在客觀世界中廣泛存在,如人類(lèi)社會(huì)的族譜和各種社會(huì)組織機(jī)構(gòu)都可用樹(shù)形象表示2021-11-11