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