<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>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                ## 一、概述 Spring中的Bean默認是單例模式的,默認情況下@Controller沒有加上@Scope,沒有加@Scope就是默認值singleton,單例的,意思就是系統只會初始化一次Controller容器,所以每次請求的都是同一個Controller容器,當然是非線程安全的。對于無狀態Bean來說,他們都是線程安全的,但對于有狀態的bean來說,則存在線程安全的問題; ## 二、方案 ### **簡單方案** 如果Bean是有狀態的 那就需要開發人員自己來進行線程安全的保證,最簡單的辦法就是改變bean的作用域 把`singleton`改為`protopyte`這樣每次請求Bean就相當于是 new Bean() 這樣就可以保證線程的安全了; 實例: ![](https://img.kancloud.cn/54/6c/546cefd12916d567be7d657fe46ccdb6_1838x892.png) ![](https://img.kancloud.cn/63/38/63383a911be254e5316460d2e0b19330_1846x892.png) 效果: 原版本,高并發情況下,會出現數據錯亂; 經過調整后,問題得到解決; ### **ThreadLocal** 1) 常量始終是線程安全的,因為只存在讀操作; 2)局部變量是線程安全的。因為每執行一個方法,都會在獨立的空間(棧幀)創建局部變量,它不是共享的資源。局部變量包括方法的**參數變量**和**方法內定義的變量**; 3)每次調用方法前都新建一個實例是線程安全的,因為不會訪問共享的資源。 4)成員變量會受到多線程影響,成員變量包括**實例變量**和**類變量(靜態變量)**; 5)對于成員變量的操作,可以使用ThreadLocal來保證線程安全;
                  <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>

                              哎呀哎呀视频在线观看