CAS的全稱是Compare And Swap 即比較交換,其算法的核心思想如下函數:
CAS(V,E,N) 參數: V表示要更新的變量 E預期值 N新值
如果V值等于E值,則将V的值設為N.若V值和E值不同,則說明已經有其他線程做了更新,則目前線程說明都不能做.通俗的了解就是CAS操作需要我們提供一個期望值,當期望值與目前線程的變量相同時,說明還沒線程修改該值,目前線程可以進行修改,也就是執行CAS操作,但如果期望值與目前線程不符,則說明該值已經被其他線程修改,此時不執行更新操作,但可以選擇或者再嘗試修改變量,也可以放棄操作.
java的CAS操作通過Unsave類來完成裡面基本都是native,即通過JNI調用c/c++等代碼.