大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 學習攻略 Java學習 Java并發編程學習CountDownLatch

Java并發編程學習CountDownLatch

更新時間:2020-04-30 10:59:07 來源:動力節點 瀏覽2213次

    基于AQS的前世今生,來學習并發工具類CountDownLatch。本文將從CountDownLatch的應用場景、源碼原理解析來學習這個并發工具類。

    1、應用場景

    CountDownLatch是并發包中用來控制一個或者多個線程等待其他線程完成操作的并發工具類。現以工作中的一個場景來描述下CountDownLatch的應用,代碼如下:

Java并發編程學習CountDownLatch

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

    2、源碼原理解析

    2.1await方法

    調用await方法會阻塞當前線程直到計數器的數值為0,方法如下:

Java并發編程學習CountDownLatch

    調用的是AQS的acquireSharedInterruptibly方法:

Java并發編程學習CountDownLatch

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

Java并發編程學習CountDownLatch

    doAcquireSharedInterruptibly方法就不再贅述,和之前Semaphore的實現是一致的,本質上仍然是AQS同步隊列的入隊自旋等待。

    2.2countDown方法

    調用countDown方法會將計數器的數值減1直到計數器為0,方法如下:

Java并發編程學習CountDownLatch

    和Semaphore一樣,調用的是AQS的releaseShared方法:

Java并發編程學習CountDownLatch

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

1588215468646646.pngJava并發編程學習CountDownLatch

    喚醒后續線程節點的doReleaseShared也不再贅述,和之前Semaphore的實現是一致的。

    總結:CountDownLatch類使用AQS同步狀態來表示計數。在await時,所有的線程進入同步隊列自旋等待,在countDown時,獲取閉鎖成功的線程會減少閉鎖的計數器,同時喚醒后續線程取獲取閉鎖,直到await中的計數器為0,獲取到閉鎖的線程才可以通過,執行下一步操作。

 以上就是動力節點java培訓機構的小編針對“Java并發編程學習CountDownLatch”的內容進行的回答,希望對大家有所幫助,如有疑問,請在線咨詢,有專業老師隨時為你服務。

提交申請后,顧問老師會電話與您溝通安排學習

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 26uuu最新| 欧美三级中文字幕 | 久草免费在线观看 | 天天操天天摸天天干 | 欧美精品国产综合久久 | 自拍亚洲午夜伦li片影院 | 久久精品国产亚洲综合色 | 国产亚洲第一伦理第一区 | 日本操操操 | 日本一级毛片视频 | 国产高清美女一级a毛片久久 | 性生生活三级视频观看 | 中国美女一级a毛片录像在线 | 午夜色网站 | 国产又黄又a又潮娇喘视频 国产又色又爽又黄又刺激18 | 狠狠操大逼 | 久久欧美精品欧美久久欧美 | 日日夜夜天天干干 | 天天操夜夜做 | 国产精品久久二区三区色裕 | 日韩在线观看中文字幕 | 国产波波社区精品视频 | 一级毛片真人免费观看 | 欧美va亚洲va在线观看蝴蝶网 | 黄页在线免费观看 | 国产美女精品视频 | 久久精品中文 | 最新国产区 | 亚洲精品久久玖玖玖玖 | 亚洲无限看 | 亚洲欧美日韩中文无线码 | 老头老太做爰xxxx视频 | 成人四虎影院 | 成人在线免费视频播放 | 日本一区二区三区中文字幕 | 国产福利在线观看精品 | 国产亚洲精品久久麻豆 | 性久久久久久久久久 | 手机看片高清国产日韩片 | 亚洲精品专区一区二区三区 | 亚洲福利视频一区二区三区 |