黄色网址大全免费-黄色网址你懂得-黄色网址你懂的-黄色网址有那些-免费超爽视频-免费大片黄国产在线观看

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動(dòng)力節(jié)點(diǎn)LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 學(xué)習(xí)攻略 Java學(xué)習(xí) Java并發(fā)編程學(xué)習(xí)CountDownLatch

Java并發(fā)編程學(xué)習(xí)CountDownLatch

更新時(shí)間:2020-04-30 10:59:07 來源:動(dòng)力節(jié)點(diǎn) 瀏覽2274次

    基于AQS的前世今生,來學(xué)習(xí)并發(fā)工具類CountDownLatch。本文將從CountDownLatch的應(yīng)用場景、源碼原理解析來學(xué)習(xí)這個(gè)并發(fā)工具類。

    1、應(yīng)用場景

    CountDownLatch是并發(fā)包中用來控制一個(gè)或者多個(gè)線程等待其他線程完成操作的并發(fā)工具類。現(xiàn)以工作中的一個(gè)場景來描述下CountDownLatch的應(yīng)用,代碼如下:

Java并發(fā)編程學(xué)習(xí)CountDownLatch

    在分析原理實(shí)現(xiàn)前,總結(jié)下CountDownLatch的作用就是阻塞其他線程直到條件允許后才釋放該阻塞,除了上述這個(gè)小案例,實(shí)際工作中還有很多可以使用CountDownLatch的場景,比如解析Excel文件時(shí)可以同時(shí)解析多個(gè)Sheet頁,所有的Sheet解析完成才算完成了Excel文件的解析。從這個(gè)代碼中也可以看到CountDownLatch的主要方法就是await和countDown,下面將以這兩個(gè)方法來分析下CountDownLatch的原理實(shí)現(xiàn)。

    2、源碼原理解析

    2.1await方法

    調(diào)用await方法會(huì)阻塞當(dāng)前線程直到計(jì)數(shù)器的數(shù)值為0,方法如下:

Java并發(fā)編程學(xué)習(xí)CountDownLatch

    調(diào)用的是AQS的acquireSharedInterruptibly方法:

Java并發(fā)編程學(xué)習(xí)CountDownLatch

    其中tryAcquireShared依賴的是Sync的實(shí)現(xiàn),和之前的ReentrantLock、ReentrantReadWriteLock及Semaphore相比,CountDownLatch的Sync只提供了一種方式,代碼如下:

Java并發(fā)編程學(xué)習(xí)CountDownLatch

    doAcquireSharedInterruptibly方法就不再贅述,和之前Semaphore的實(shí)現(xiàn)是一致的,本質(zhì)上仍然是AQS同步隊(duì)列的入隊(duì)自旋等待。

    2.2countDown方法

    調(diào)用countDown方法會(huì)將計(jì)數(shù)器的數(shù)值減1直到計(jì)數(shù)器為0,方法如下:

Java并發(fā)編程學(xué)習(xí)CountDownLatch

    和Semaphore一樣,調(diào)用的是AQS的releaseShared方法:

Java并發(fā)編程學(xué)習(xí)CountDownLatch

    其中tryReleaseShared依賴的是Sync的實(shí)現(xiàn),和之前的ReentrantLock、ReentrantReadWriteLock及Semaphore相比,CountDownLatch的Sync只提供了一種方式,代碼如下:

1588215468646646.pngJava并發(fā)編程學(xué)習(xí)CountDownLatch

    喚醒后續(xù)線程節(jié)點(diǎn)的doReleaseShared也不再贅述,和之前Semaphore的實(shí)現(xiàn)是一致的。

    總結(jié):CountDownLatch類使用AQS同步狀態(tài)來表示計(jì)數(shù)。在await時(shí),所有的線程進(jìn)入同步隊(duì)列自旋等待,在countDown時(shí),獲取閉鎖成功的線程會(huì)減少閉鎖的計(jì)數(shù)器,同時(shí)喚醒后續(xù)線程取獲取閉鎖,直到await中的計(jì)數(shù)器為0,獲取到閉鎖的線程才可以通過,執(zhí)行下一步操作。

 以上就是動(dòng)力節(jié)點(diǎn)java培訓(xùn)機(jī)構(gòu)的小編針對(duì)“Java并發(fā)編程學(xué)習(xí)CountDownLatch”的內(nèi)容進(jìn)行的回答,希望對(duì)大家有所幫助,如有疑問,請(qǐng)?jiān)诰€咨詢,有專業(yè)老師隨時(shí)為你服務(wù)。

提交申請(qǐng)后,顧問老師會(huì)電話與您溝通安排學(xué)習(xí)

免費(fèi)課程推薦 >>
技術(shù)文檔推薦 >>
主站蜘蛛池模板: 国产激情视频在线播放 | 久久网伊人 | 一级寡妇乱色毛片全场免费 | 成人深夜福利在线播放不卡 | 色吧久久 | 在线观看黄的网站 | free性中国hd护士高清 | 成年视频在线观看免费 | 免费黄网站在线观看 | 国产黄a三级三级三级 | 国产精品视频第一页 | 成人ab片 | 亚洲第一免费播放区 | 国产日韩一区二区三区在线播放 | 天天狠狠 | 第一国内永久免费福利视频 | 免费一极毛片 | 亚洲第一视频网站 | 黄色aa毛片 | 国产福利午夜波多野结衣 | 欧美xxxxbbbb在线播放 | 日韩一区在线视频 | 国产精品一区久久精品 | 99r8这是只有精品视频9 | 久久国产综合精品欧美 | 狠狠做五月深爱婷婷天天综合 | 女人洗澡一级毛片一级毛片 | 日韩在线第二页 | 曰批视频在线观看 | 久久久青草青青国产亚洲免观 | 99精品热女视频专线 | 欧美色欧美亚洲高清在线视频 | 国内精品免费久久久久妲己 | 亚洲成人高清在线观看 | 国产精品成人第一区 | 国产综合成色在线视频 | 国产伦精品一区二区 | 成人三级精品视频在线观看 | 日韩一区在线播放 | 青青草国产青春综合久久 | 毛片在线观看视频 |