Java-CAS初探
生活随笔
收集整理的這篇文章主要介紹了
Java-CAS初探
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
能不能不對(duì)共享資源進(jìn)行鎖定,也能對(duì)線程調(diào)用進(jìn)行協(xié)調(diào)???
CAS: compare and sawp? 可以簡(jiǎn)單翻譯為比較然后交換.
? ?old value:代表之前讀到的資源對(duì)象的狀態(tài)止.
? ?new value: 代表想要將資源對(duì)象的狀態(tài)值更新后的值.
?
各種不同架構(gòu)的cpu都提供了指令級(jí)別的cas原子操作. cpu已經(jīng)原生的支持了cas.
在x86架構(gòu)下, 通過 cmpxchg指令支持cas.
在arm架構(gòu)下,通過LL/SC來實(shí)現(xiàn)cas.
?
那么在java中,是如何封裝調(diào)用cas的呢?
???? 利用unsafe提供的原子性操作方法.
?
什么事ABA問題?怎么解決?
? 當(dāng)一個(gè)值從A變成B,又更新回A,普通CAS機(jī)制會(huì)誤判通過檢測(cè)。利用版本號(hào)比較可以有效解決ABA問題。
?
?
?
?
?
?
?
總結(jié)
以上是生活随笔為你收集整理的Java-CAS初探的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java-ReentrantLock初探
- 下一篇: intellij idea 全局搜索