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,否则就什么都不做。整个比较并替换的操作是一个原子操作。

猜你喜欢

转载自www.cnblogs.com/kuparuysaka/p/10642721.html