<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          CAS的ABA有沒有必要解決?

          共 523字,需瀏覽 2分鐘

           ·

          2021-03-14 12:39

          1. 什么是ABA問題?
            ? ABA示例:
            ? 1).在多線程的環(huán)境中,線程a從共享的地址X中讀取到了對象A。
            ? 2).在線程a準(zhǔn)備對地址X進(jìn)行更新之前,線程a掛起。線程b將地址X中的值修改為了B。
            ? 3).接著線程b或者線程c將地址X中的值又修改回了A。
            ? 4).線程a恢復(fù),接著對地址X執(zhí)行CAS,發(fā)現(xiàn)X中存儲的還是對象A,對象匹配,CAS成功。

          2. ABA問題需不需要解決?
            ? 如果依賴中間變化的狀態(tài),需要解決。如果不是依賴中間變化的狀態(tài),對業(yè)務(wù)結(jié)果無影響。 

          3. 解決ABA問題。
            ABA問題的解決思路就是使用版本號。在變量前面追加上版本號,每次變量更新的時候把版本號加一,那么A-B-A 就會變成1A-2B-3A。
            從Java1.5開始JDK的atomic包里提供了AtomicStampedReference和AtomicMarkableReference類來解決ABA問題。


          瀏覽 74
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  翔田千里精品视频 | 亚洲天堂电影 | 午夜男女羞羞影院 | 大香蕉国产视频 | 三级日本黄色电影在线观看 |