1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        AtomicStampedReference與AtomicMarkableReference的區(qū)別

        共 1394字,需瀏覽 3分鐘

         ·

        2021-03-26 00:19

        AtomicReference

          通過volatile和Unsafe提供的CAS函數(shù)實現(xiàn)原子操作。 自旋+CAS的無鎖操作保證共享變量的線程安全

        1. value是volatile類型,這保證了:當某線程修改value的值時,其他線程看到的value的值都是最新的值,即修改之后的volatile的值

        2. 通過CAS設置value。這保證了:某線程池通過CAS函數(shù)(如compareAndSet函數(shù))設置value時,它的操作時原子性的,即線程在操作vu略時不會被中斷。

        但是CAS操作可能存在ABA問題。AtomicStampedReference的出現(xiàn)就是為了解決這問題

        AtomicStampedReference

        構造方法中initialStamp(時間戳)用來唯一標識引用變量,在構造器內(nèi)部,實例化了一個Pair對象,Pair對象記錄了對象引用和時間戳信息,采用int作為時間戳,實際使用的時候,要保證時間戳唯一(一般做成自增的),如果時間戳如果重復,還會出現(xiàn)ABA的問題。

        AtomicStampedReference中的每一個引用變量都帶上了pair.stamp這個時間戳,這樣就可以解決CAS中的ABA的問題。

         

        /**
        * Creates a new {@code AtomicStampedReference} with the given
        * initial values.
        *
        * @param initialRef the initial reference
        * @param initialStamp the initial stamp
        */
        public AtomicStampedReference(V initialRef, int initialStamp) {
        pair = Pair.of(initialRef, initialStamp);
        }


        AtomicMarkableReference

        AtomicStampedReference可以知道,引用變量中途被更改了幾次。有時候,我們并不關心引用變量更改了幾次,只是單純的關心是否更改過,所以就有了AtomicMarkableReference。

        AtomicMarkableReference的唯一區(qū)別就是不再用int標識引用,而是使用boolean變量——表示引用變量是否被更改過。
        構造函數(shù)
        /**
        * Creates a new {@code AtomicMarkableReference} with the given
        * initial values.
        *
        * @param initialRef the initial reference
        * @param initialMark the initial mark
        */
        public AtomicMarkableReference(V initialRef, boolean initialMark) {
        pair = Pair.of(initialRef, initialMark);
        }
        瀏覽 74
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
        評論
        圖片
        表情
        推薦
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            欧美三级片视频网站 | 白白嫩嫩美女高清毛片免费看 | 天天操天天插天天 | aaaaaa在线观看免费高清 | 偷窥自拍第一页 | 日日摸日日摸 | 欧美精品一 | 亚洲视频在线播放免费 | 嫩草精品 | 玖玖玖色|