<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                ## 什么是synchronized ? 是Java中的關鍵字:用來修飾方法、對象實例。屬于獨占鎖、悲觀鎖、可重入鎖、非公平鎖。 1. 作用于實例方法時,鎖住的是對象的實例(this); 2. 當作用于靜態方法時,鎖住的是 Class類,相當于類的一個全局鎖, 會鎖所有調用該方法的線程; 3. synchronized 作用于一個非 NULL的對象實例時,鎖住的是所有以該對象為鎖的代碼塊。它有多個隊列,當多個線程一起訪問某個對象監視器的時候,對象監視器會將這些線程存儲在不同的容器中。 ## synchronized 加鎖原理? jdk 1.6 之前直接就是重量級鎖:通過對象內部的監視器(monitor)實現,依賴于操作系統,線程需要爭搶 monitor,搶到的就是加鎖成功,沒搶到的會放到隊列中。涉及到阻塞同步,上下文切換,線程調度,操作系統的內核態和用戶態的切換。消耗大,性能差。 jdk1.6 以后對synchronized鎖進行了優化 內核態:當進程(線程)需要內核代碼執行時,就是處于內核態。其他都是用戶態。 ## synchronized 鎖升級(鎖膨脹)? 無鎖 => 偏向鎖 =》 自旋鎖(輕量級鎖) =》 重量級鎖 當有線程加鎖時,會在對象頭中記錄線程id,如果以后還是這個線程,則可以直接運行后續代碼,當2個線程以上爭搶加鎖時,則直接升級為輕量級鎖,CAS進行自旋加鎖,當線程加鎖競爭激烈,CAS自旋不成功(默認 10 次)則升級為重量級鎖。 輕量級鎖也被稱為非阻塞同步、樂觀鎖 互斥鎖(重量級鎖)也稱為阻塞同步、悲觀鎖 ### 可重入鎖如果加了兩把,但是只釋放了一把會出現什么問題? 程序卡死,線程不能出來,也就是說我們申請了幾把鎖,就需要釋放幾把鎖。 ### 如果只加了一把鎖,釋放兩次會出現什么問題? 會報錯,java.lang.IllegalMonitorStateException。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看