什么是CAS?
CAS:全程Compare and swap,“比较并交换”;一个CAS涉及3个操作:
我们假设内存中的原数据为V;自己的预期值为A,想要把原数据V修改成新值B。
- 比较A、V是否相等
- 若相等,将V修改成B
- 返回操作是否修改
CAS的伪代码:
public boolean CAS(int V,int A,int B) {
if(V==A){
V=B;
return true;
}
return false;
}
CAS有哪些应用?
- 实现原子类:利用AtomicInteger类
public class CAS {
private static int number=0;
private static AtomicInteger atomicInteger=new AtomicInteger(0);
public static void main(String[] args) throws InterruptedException {
Thread thread1=new Thread(()->{
for (int i=0;i<100;i++){
atomicInteger.getAndIncrement();//相当于i++
number++;
}
});
Thread thread2=new Thread(()->{
for (int i=0;i