欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

JDK8 new ReentrantLock((true)加鎖流程

 更新時(shí)間:2023年07月06日 10:35:35   作者:子瞻  
這篇文章主要介紹了java面試中常遇到的問題JDK8 new ReentrantLock((true)加鎖流程示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

new ReentrantLock(true)加鎖流程

protected final boolean tryAcquire(int acquires) {
    //獲取當(dāng)前線程
    final Thread current = Thread.currentThread();
    //獲取state值
    int c = getState();
    //還沒有線程占用
    if (c == 0) {
        //!(頭節(jié)點(diǎn)和尾節(jié)點(diǎn)不是一個(gè)節(jié)點(diǎn) && (頭節(jié)點(diǎn)的next -> NULL 或者 頭節(jié)點(diǎn).next節(jié)點(diǎn) 不是 當(dāng)前線程 ))
        //也就是說,頭尾是一個(gè)節(jié)點(diǎn) 或者 頭節(jié)點(diǎn).next節(jié)點(diǎn)的線程是當(dāng)前線程
        if (!hasQueuedPredecessors() &&
            //cas 0 -> 1
            compareAndSetState(0, acquires)) {
            /設(shè)置獨(dú)占線程
            setExclusiveOwnerThread(current);
            return true;
        }
    }
    //當(dāng)前線程等于獨(dú)占線程
    else if (current == getExclusiveOwnerThread()) {
        //state值+1
        int nextc = c + acquires;
        if (nextc < 0)
            throw new Error("Maximum lock count exceeded");
        //重新賦值 state 值
        setState(nextc);
        return true;
    }
    //否則返回false
    return false;
}

如果獲得鎖失敗,和JDK8 new ReentrantLock()加鎖流程中流程一樣!

以上就是JDK8 new ReentrantLock((true)加鎖流程的詳細(xì)內(nèi)容,更多關(guān)于JDK8 new ReentrantLock的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Java中的LinkedList集合詳解

    Java中的LinkedList集合詳解

    這篇文章主要介紹了Java中的LinkedList集合詳解,  LinkedList 是一個(gè)雙向鏈表結(jié)構(gòu)(JDK1.6 之前為循環(huán)鏈表,JDK1.7 取消了循環(huán)),在任意位置插入刪除都很方便,但是不支持隨機(jī)取值,每次都只能從一端開始遍歷,直到找到查詢的對象,然后返回,需要的朋友可以參考下
    2023-09-09
  • Java中的AQS同步隊(duì)列問題詳解

    Java中的AQS同步隊(duì)列問題詳解

    AQS?提供一套基礎(chǔ)的機(jī)制來實(shí)現(xiàn)線程的同步、阻塞與喚醒、等待隊(duì)列等功能,也就是想要深入學(xué)習(xí)線程工具類,這個(gè)同步隊(duì)列就必須得掌握,這篇文章主要介紹了Java中的AQS同步隊(duì)列問題,需要的朋友可以參考下
    2022-06-06
  • java面試應(yīng)用上線后Cpu使用率飆升如何排查

    java面試應(yīng)用上線后Cpu使用率飆升如何排查

    這篇文章主要為大家介紹了java面試中應(yīng)用上線后Cpu使用率飆升如何排查的方法示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-07-07
  • Spring Boot整合mybatis并自動生成mapper和實(shí)體實(shí)例解析

    Spring Boot整合mybatis并自動生成mapper和實(shí)體實(shí)例解析

    本文是小編給大家總結(jié)的關(guān)于Spring Boot整合mybatis并自動生成mapper和實(shí)體的內(nèi)容,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2018-05-05
  • 詳解利用Spring加載Properties配置文件

    詳解利用Spring加載Properties配置文件

    本篇文章主要介紹了詳解利用Spring加載Properties配置文件,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-04-04
  • Spring調(diào)度框架EnableScheduling&Scheduled源碼解析

    Spring調(diào)度框架EnableScheduling&Scheduled源碼解析

    這篇文章主要介紹了Spring調(diào)度框架EnableScheduling&Scheduled源碼解析,@EnableScheduling&Scheduled定時(shí)調(diào)度框架,本著不僅知其然還要知其所以然的指導(dǎo)思想,下面對該調(diào)度框架進(jìn)行源碼解析,以便更好的理解其執(zhí)行過程,需要的朋友可以參考下
    2024-01-01
  • 關(guān)于在Springboot中集成unihttp后應(yīng)用無法啟動的解決辦法

    關(guān)于在Springboot中集成unihttp后應(yīng)用無法啟動的解決辦法

    本文主要介紹了在SpringBoot項(xiàng)目中集成UniHttp框架時(shí)遇到的無法啟動問題,并提供了解決方法,作者通過詳細(xì)記錄和分析問題,希望為其他開發(fā)者提供有價(jià)值的參考和借鑒,感興趣的朋友跟隨小編一起看看吧
    2025-03-03
  • SpringBoot無法訪問webapp目錄下的文件問題

    SpringBoot無法訪問webapp目錄下的文件問題

    這篇文章主要介紹了SpringBoot無法訪問webapp目錄下的文件問題,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-05-05
  • 關(guān)于Spring的統(tǒng)一功能處理(攔截器)實(shí)現(xiàn)

    關(guān)于Spring的統(tǒng)一功能處理(攔截器)實(shí)現(xiàn)

    這篇文章主要介紹了關(guān)于Spring的統(tǒng)一功能處理(攔截器)實(shí)現(xiàn),每個(gè)方法中都要單獨(dú)寫用戶登錄驗(yàn)證的方法,即使封裝成公共方法,也一樣要傳參調(diào)用和在方法中進(jìn)行判斷,需要的朋友可以參考下
    2023-05-05
  • 一文解開java中字符串編碼的小秘密(干貨)

    一文解開java中字符串編碼的小秘密(干貨)

    這篇文章主要介紹了一文解開java中字符串編碼的小秘密(干貨),具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-09-09

最新評論