亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Java并發(fā)編程之CountDownLatch解析

 更新時(shí)間:2023年12月20日 10:00:07   作者:Brain_L  
這篇文章主要介紹了Java并發(fā)編程之CountDownLatch解析,Sync為一個(gè)實(shí)現(xiàn)了AQS的內(nèi)部類,代理CountDownLatch的獲取和釋放操作,需要所有線程等待某個(gè)條件完成后,才執(zhí)行某個(gè)動(dòng)作時(shí),可以使用CountDownLatch,需要的朋友可以參考下

Java的CountDownLatch

ReentrantLock為獨(dú)占鎖,也即排他鎖,同一時(shí)刻只能有一個(gè)線程持有鎖?,F(xiàn)在來看幾種共享鎖。

CountDownLatch

public CountDownLatch(int count) {
        if (count < 0) throw new IllegalArgumentException("count < 0");
        this.sync = new Sync(count);
}
private final Sync sync;
private static final class Sync extends AbstractQueuedSynchronizer {
        private static final long serialVersionUID = 4982264981922014374L;
        Sync(int count) {
            //設(shè)置資源總數(shù)
            setState(count);
        }
        int getCount() {
            return getState();
        }
        protected int tryAcquireShared(int acquires) {
            //資源
            return (getState() == 0) ? 1 : -1;
        }
        protected boolean tryReleaseShared(int releases) {
            // Decrement count; signal when transition to zero
            for (;;) {
                //1、獲取當(dāng)前資源數(shù)
                int c = getState();
                if (c == 0)
                    return false;
                //2、釋放一個(gè)資源
                int nextc = c-1;
                //3、CAS更新資源數(shù)
                if (compareAndSetState(c, nextc))
                    return nextc == 0;
            }
        }
    }

生成CountDownLatch時(shí)需要傳入資源總數(shù),代表所有線程總共享有這么多資源。

Sync為一個(gè)實(shí)現(xiàn)了AQS的內(nèi)部類,代理CountDownLatch的獲取和釋放操作。

public void await() throws InterruptedException {
        sync.acquireSharedInterruptibly(1);
    }
public void countDown() {
        sync.releaseShared(1);
    }

線程調(diào)用countDown時(shí),最終調(diào)用Sync中的tryReleaseShared,將總資源減1。

調(diào)用await時(shí),最終調(diào)用Sync中tryAcquireShared,看資源是否全部釋放完。

需要所有線程等待某個(gè)條件完成后,才執(zhí)行某個(gè)動(dòng)作時(shí),可以使用CountDownLatch。

到此這篇關(guān)于Java并發(fā)編程之CountDownLatch解析的文章就介紹到這了,更多相關(guān)Java的CountDownLatch內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Spring Boot與Kotlin定時(shí)任務(wù)的示例(Scheduling Tasks)

    Spring Boot與Kotlin定時(shí)任務(wù)的示例(Scheduling Tasks)

    這篇文章主要介紹了Spring Boot與Kotlin定時(shí)任務(wù)的示例(Scheduling Tasks),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-03-03
  • springboot2?使用activiti6?idea插件的過程詳解

    springboot2?使用activiti6?idea插件的過程詳解

    這篇文章主要介紹了springboot2?使用activiti6?idea插件,本文通過截圖實(shí)例代碼相結(jié)合給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-03-03
  • 深入解析Java的Servlet過濾器的原理及其應(yīng)用

    深入解析Java的Servlet過濾器的原理及其應(yīng)用

    這篇文章主要介紹了深入解析Java的Servlet過濾器的原理及應(yīng)用,Java編寫的Servlet通常是一個(gè)與網(wǎng)頁一起作用于瀏覽器客戶端的程序,需要的朋友可以參考下
    2016-01-01
  • 深入分析JAVA Synchronized關(guān)鍵字

    深入分析JAVA Synchronized關(guān)鍵字

    這篇文章主要介紹了析JAVA Synchronized關(guān)鍵字的相關(guān)知識,文中代碼非常詳細(xì),幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-06-06
  • Mybatis傳遞多個(gè)參數(shù)進(jìn)行SQL查詢的用法

    Mybatis傳遞多個(gè)參數(shù)進(jìn)行SQL查詢的用法

    本文給大家介紹Mybatis傳遞多個(gè)參數(shù)進(jìn)行SQL查詢的用法的相關(guān)知識,本文還給大家介紹了mybatis通過Map傳遞多個(gè)參數(shù)和JavaBean傳遞多個(gè)參數(shù),本文介紹的非常詳細(xì),具有參考借鑒價(jià)值,感興趣的朋友一起學(xué)習(xí)吧
    2016-06-06
  • 詳解spring security安全防護(hù)

    詳解spring security安全防護(hù)

    這篇文章主要介紹了詳解spring security安全防護(hù),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-07-07
  • Spring Boot的Profile配置詳解

    Spring Boot的Profile配置詳解

    本篇文章主要介紹了Spring Boot的Profile配置詳解,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-05-05
  • 解決IDEA無法下載maven依賴的問題

    解決IDEA無法下載maven依賴的問題

    這篇文章主要介紹了解決IDEA無法下載maven依賴的問題,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • java如何實(shí)現(xiàn)數(shù)位分離

    java如何實(shí)現(xiàn)數(shù)位分離

    這篇文章主要介紹了java如何實(shí)現(xiàn)數(shù)位分離,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-01-01
  • springboot配置ssl后啟動(dòng)一直是端口被占用的解決

    springboot配置ssl后啟動(dòng)一直是端口被占用的解決

    這篇文章主要介紹了springboot配置ssl后啟動(dòng)一直是端口被占用的解決方案,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-08-08

最新評論