對CAS演算法的簡單理解
在瞭解和看AbstractQueuedSynchronizer的原始碼時,經常出現了compareAndSetHead和compareAndSetTail,這兩個方法底層都是呼叫了unsafe.compareAndSwapObject(this, valueOffset, expect, update);
這個方法是主要是利用了CPU的CAS指令,即是CAS演算法。
該方法的主要邏輯是
if (this == expect) {
this = update
return true;
} else {
return false;
}
這樣我們可以理解CAS為:
CAS有3個引數值,記憶體值V(this),舊的值A(expect)和要新值B(update)。當且僅當預期值A和記憶體值V相同時,將記憶體值V修改為B,否則什麼都不做。
相關文章
- 對CSRF的簡單理解
- CAS之單核/多核理解單核
- 談一談對vuex的簡單理解Vue
- 簡單理解Paxos演算法(譯)演算法
- 理解CAS
- 簡單的前後端分離 Cas後端
- 我對微服務架構的簡單理解微服務架構
- CAS單點登入-簡介
- 談一談對vue-router的簡單理解Vue
- 簡單理解slot演算法和shadow DOM演算法
- ThreadLocal的簡單理解thread
- ElasticSearch學習筆記(二)——對聚合的簡單理解Elasticsearch筆記
- 簡述對Vuex的理解Vue
- 對於ambari-collector 部分原始碼流程的簡單理解原始碼
- Java的簡單理解(2)Java
- PHP socket 的簡單理解PHP
- MongoDB索引的簡單理解MongoDB索引
- 快速排序的簡單理解排序
- 簡單理解promisePromise
- EJB簡單理解
- Restful簡單理解REST
- BFC簡單理解
- 尋找圖的強連通分量:tarjan演算法簡單理解演算法
- 我對Kosaraju演算法的理解演算法
- 關於BFC的簡單理解
- Object.keys()的簡單理解Object
- vue cli 3的簡單理解Vue
- 簡單的理解 Object.defineProperty()Object
- 氣泡排序的簡單理解排序
- 選擇排序的簡單理解排序
- 歸併排序的簡單理解排序
- 基數排序的簡單理解排序
- 關於RabbitMQ的簡單理解MQ
- 【多執行緒系列】CAS、AQS簡單介紹執行緒AQS
- 簡單理解OAuth 2.0OAuth
- 資料探勘之KMeans演算法應用與簡單理解演算法
- 插值查詢的簡單理解
- 簡單演算法演算法