原子性:表現(xiàn)為每個可以單獨操作在塔,不相互依賴,在線程中表現(xiàn)為每個線程都有他自己的一份值虐拓,不定期的刷新到主內(nèi)存心俗。
1.CAS實現(xiàn)volatile的原子性
volatile只能實現(xiàn)可見性傲武,不能實現(xiàn)原子性蓉驹。但是可以用CAS操作來實現(xiàn)其原子性。
實現(xiàn)原理:CAS保存了3個值揪利,H為預(yù)期值态兴,V為內(nèi)存值,S為計算值疟位。
代碼如下:
public final int casTest() {
for (;;) {
int h=i; //A線程叫AH瞻润,B線程描述為BH
int s = i + 1; // A線程叫AS,B線程描述為BS
if(h==i){ // 比較內(nèi)存值和預(yù)期值
i=s; // 如果相同甜刻,賦值绍撞,成功CAS
break;
}
}