天天看點

java并發程式設計--CAS算法(Compare And Swap)

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++等代碼.

繼續閱讀