天天看点

#Java多线程——CAS#CAS(compareandswap)涉及使用cpu指令(不同架构不一致,与cpu硬件指令有

#Java多线程——CAS #

CAS(compare and swap) 涉及使用cpu 指令(不同架构不一致,与cpu硬件指令有关)保证操作的原子性。unsafe可以直接操作内存地址。 java.util.concurrent.atomic包下的采用cas保证操作的原子性。

主要3个操作数,当前值:A,内存值:V ,期望值:B。

if (A == C){ // 当前值 与内存值相等

C = B ; // 内存值修改为 B

}else{

//放弃更新 ,什么都不做

}

CAS特点:

1)优点:采用CPU指令,属于无锁操作,多线程可以操作共享资源。

2)缺点:存在ABA问题,AtomicStampedReference类解决了ABA,除了比较内存值,增加了版本比较。

#Java多线程——CAS#CAS(compareandswap)涉及使用cpu指令(不同架构不一致,与cpu硬件指令有
#Java多线程——CAS#CAS(compareandswap)涉及使用cpu指令(不同架构不一致,与cpu硬件指令有
#Java多线程——CAS#CAS(compareandswap)涉及使用cpu指令(不同架构不一致,与cpu硬件指令有

继续阅读