成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

淺析CAS操作與JAVA實現(xiàn)

haobowd / 675人閱讀

CAS

Compare And Swap.比較并交換.java中的同步器就是基于CAS技術(shù)實現(xiàn)的,為什么它能保證操作的同步性呢?因為是原子操作的一種,所以可以在多線程環(huán)境下來實現(xiàn)數(shù)據(jù)的交換操作不被打斷.

CAS的缺陷
ABA問題:
第一個線程來讀取變量A時被掛起;第二個線程過來操作A,將A賦值為B之后,并重新賦值為A;線程二完成操作;此時,對于線程一來說,所看到變量A的值是沒有變化的,但是實際上變量A已經(jīng)修改了兩次.
上述情況還不是最壞情況.如果在一個隊列中,有三個指針元素分別順序的指向了三個內(nèi)存地址.進(jìn)行.當(dāng)?shù)谝粋€線程操作第一個位置的指針元素時,線程被掛起.線程二過來進(jìn)行了一大堆的pop和push操作,這時第一個位置的指針元素的數(shù)據(jù).
CAS下ABA問題及優(yōu)化方案

CAS的優(yōu)點
它比鎖快.
Disruptor論文中講述了一個實驗:
這個測試程序調(diào)用了一個函數(shù),該函數(shù)會對一個64位的計數(shù)器循環(huán)自增5億次。
機(jī)器環(huán)境:2.4G 6核
運(yùn)算: 64位的計數(shù)器累加5億次

Method    Time (ms)
Single thread    300
Single thread with CAS    5,700
Single thread with lock    10,000
Single thread with volatile write    4,700
Two threads with CAS    30,000
Two threads with lock    224,000

所以,鎖的性能相對于CAS操作更加低.

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/70465.html

相關(guān)文章

  • CAS 5.2.x 單點登錄 - 實現(xiàn)原理及源碼淺析

    摘要:上一篇文章簡單介紹了在本地開發(fā)環(huán)境中搭建服務(wù)端和客戶端,對單點登錄過程有了一個直觀的認(rèn)識之后,本篇將探討單點登錄的實現(xiàn)原理。因此引入服務(wù)端作為用戶信息鑒別和傳遞中介,達(dá)到單點登錄的效果。為該流程的實現(xiàn)類。表示對返回結(jié)果的處理。 上一篇文章簡單介紹了 CAS 5.2.2 在本地開發(fā)環(huán)境中搭建服務(wù)端和客戶端,對單點登錄過程有了一個直觀的認(rèn)識之后,本篇將探討 CAS 單點登錄的實現(xiàn)原理。 一...

    elisa.yang 評論0 收藏0
  • Java并發(fā)】淺析 AtomicLong & LongAdder

    摘要:最終依舊使用來更新值。此時使用能更好地提升性能。適用于高并發(fā)情況下的計數(shù)操作,利用與相似的原理,以空間換時間,提高了實際的計數(shù)效率。 AtomicLong /** * Atomically increments by one the current value. * * @return the updated value */ public final long increme...

    zhjx922 評論0 收藏0
  • cas工作原理淺析總結(jié)

    摘要:是大學(xué)發(fā)起的一個企業(yè)級的開源的項目,旨在為應(yīng)用系統(tǒng)提供一種可靠的單點登錄解決方法屬于。實現(xiàn)原理是先通過的認(rèn)證,然后向申請一個針對于的,之后在訪問時把申請到的針對于的以參數(shù)傳遞過去。后面的流程與上述流程步驟及以后步驟類似 CAS( Central Authentication Service )是 Yale 大學(xué)發(fā)起的一個企業(yè)級的、開源的項目,旨在為 Web 應(yīng)用系統(tǒng)提供一種可靠的單點登...

    warkiz 評論0 收藏0
  • java-AQS源碼淺析

    摘要:獲取資源失敗,將該線程加入等待隊列尾部,標(biāo)記為獨占模式。如果有剩余資源則會喚醒下一個線程,且整個過程忽略中斷的影響。 AQS概念及定義 ASQ:AbstractQueuedSynchronizer 它維護(hù)了一個volatile int state(代表共享資源)和一個FIFO線程等待隊列(多線程爭用資源被阻塞時會進(jìn)入此隊列,有個內(nèi)部類Node定義了節(jié)點。隊列由AQS的volatile成...

    Lemon_95 評論0 收藏0
  • AbstractQueuedSynchronizer理解之一(ReentrantLock)

    摘要:有了這個基礎(chǔ),才能發(fā)揮作用,使得在節(jié)點取消和異常時能夠保證隊列在多線程下的完整性。 Doug Lea是JDK中concurrent工具包的作者,這位大神是誰可以自行g(shù)oogle。 本文淺析ReentrantLock(可重入鎖)的原理 Lock接口 showImg(https://segmentfault.com/img/bV2671?w=276&h=176); Lock接口定義了這幾個...

    learning 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<