最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JDK8 new ReentrantLock((true)加鎖流程

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

new ReentrantLock(true)加鎖流程

protected final boolean tryAcquire(int acquires) {
    //獲取當前線程
    final Thread current = Thread.currentThread();
    //獲取state值
    int c = getState();
    //還沒有線程占用
    if (c == 0) {
        //!(頭節(jié)點和尾節(jié)點不是一個節(jié)點 && (頭節(jié)點的next -> NULL 或者 頭節(jié)點.next節(jié)點 不是 當前線程 ))
        //也就是說,頭尾是一個節(jié)點 或者 頭節(jié)點.next節(jié)點的線程是當前線程
        if (!hasQueuedPredecessors() &&
            //cas 0 -> 1
            compareAndSetState(0, acquires)) {
            /設置獨占線程
            setExclusiveOwnerThread(current);
            return true;
        }
    }
    //當前線程等于獨占線程
    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)加鎖流程的詳細內容,更多關于JDK8 new ReentrantLock的資料請關注腳本之家其它相關文章!

相關文章

  • 關于Springboot2.x集成lettuce連接redis集群報超時異常Command timed out after 6 second(s)

    關于Springboot2.x集成lettuce連接redis集群報超時異常Command timed out afte

    這篇文章主要介紹了Springboot2.x集成lettuce連接redis集群報超時異常Command timed out after 6 second(s),本文通過實例代碼給大家介紹的非常詳細,需要的朋友可以參考下
    2021-03-03
  • java設計模式--建造者模式詳解

    java設計模式--建造者模式詳解

    這篇文章主要介紹了Java設計模式之建造者模式,結合具體實例形式分析了建造者模式的概念、原理、實現方法與相關使用注意事項,需要的朋友可以參考下
    2021-07-07
  • MyBatis-Plus 樂觀鎖的具體實現

    MyBatis-Plus 樂觀鎖的具體實現

    MyBatis-Plus 的樂觀鎖通過簡單的配置和注解,可以輕松實現高并發(fā)場景下的數據并發(fā)控制,具有一定的參考價值,感興趣的可以了解一下
    2024-09-09
  • Java實現簡單的銀行管理系統(tǒng)的示例代碼

    Java實現簡單的銀行管理系統(tǒng)的示例代碼

    這篇文章主要介紹了如何利用Java實現簡單的銀行管理系統(tǒng),可以實現存款,取款,查詢等功能,文中的示例代碼講解詳細,感興趣的可以了解一下
    2022-09-09
  • Java8中Stream的詳細使用方法大全

    Java8中Stream的詳細使用方法大全

    Java8的另一大亮點Stream,它與java.io包里的InputStream和OutputStream是完全不同的概念,下面這篇文章主要給大家介紹了關于Java8中Stream詳細使用方法的相關資料,需要的朋友可以參考下
    2022-06-06
  • 如何區(qū)分JAVA中的equals與==

    如何區(qū)分JAVA中的equals與==

    這篇文章主要介紹了如何區(qū)分JAVA中的equals與==,文章簡單易懂,實例代碼幫助大家更好的參考學習,感興趣的朋友可以了解下
    2020-06-06
  • Java?Stream流使用最多的方式示例詳解

    Java?Stream流使用最多的方式示例詳解

    在 Java 編程中,Stream 流提供了一種高效、便捷的方式來處理集合數據,本文將詳細介紹 Java 中 Stream 流的用法,包括基礎用法、中級用法、高級用法以及一些特殊方法的使用,感興趣的朋友一起看看吧
    2024-12-12
  • 解決IDEA提示:MVC DispatcherServlet servlet context in module ssm. File is included in 4 contexts.問題

    解決IDEA提示:MVC DispatcherServlet servlet contex

    在SSM整合配置Spring時出現錯誤,需刪除多余配置文件并重新導入,若屬性解析失敗,清除緩存重啟IDEA,個人經驗,供參考
    2025-08-08
  • Java實現石頭剪刀布小游戲

    Java實現石頭剪刀布小游戲

    這篇文章主要為大家詳細介紹了Java實現石頭剪刀布小游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-01-01
  • MyBatis Generator介紹及使用方法

    MyBatis Generator介紹及使用方法

    MyBatis Generator 是一款針對 MyBatis 或 iBATIS 設計的代碼生成器,由 MyBatis 官方提供,這篇文章主要介紹了MyBatis Generator介紹及使用方法,需要的朋友可以參考下
    2023-06-06

最新評論

武平县| 蒙山县| 门头沟区| 饶河县| 玉田县| 黄大仙区| 堆龙德庆县| 汾阳市| 拉萨市| 绥芬河市| 和硕县| 普安县| 宁陵县| 南充市| 新营市| 筠连县| 麻栗坡县| 富裕县| 鱼台县| 车致| 麻城市| 五寨县| 滨海县| 巩义市| 普兰县| 屏东县| 马边| 略阳县| 永寿县| 南江县| 英德市| 曲水县| 汕尾市| 安岳县| 沂源县| 大石桥市| 绥中县| 柞水县| 台山市| 闽清县| 金湖县|