Java并发-CAS算法
当一个线程对临界数据资源操作时,必须给出一个期望值,数据实际的值须与期望值相符,否则视为数据被其他线程修改
CAS算法 Compare And Swap
所有操作都由一条CPU指令执行,cmpxchg
if(accumulator == Destination){
ZF = 1;
Destination = Source;
}else{
ZF = 0;
accumulator = Destination;
}
比较并替换。CAS需要有3个操作数:内存地址V,旧的预期值A,即将要更新的目标值B。
CAS指令执行时,当且仅当内存地址V的值与预期值A相等时,将内存地址V的值修改为B,否则就什么都不做。整个比较并替换的操作是一个原子操作。