一、什么是CAS
CAS即比较并替换,是一种轻量级锁,一般用于并发量不大的场景,CAS机制中用了3个变量:内存值V,旧的预期值A,要修改的新值B;只有当内存中的值和旧的预期值相等的情况下才更新值为B,否则该线程会一直自旋等待,下面我们用大白话来解释CAS。
二、CAS 应用
想象一下假如现在我们有2个线程,对共享变量进行i++操作,如果不加锁会出现什么情景呢,先看一个代码
private static int count = 0;
public static void main(String[] args) {
CountDownLatch latch = new CountDownLatch(2);
for(int i=0;i<2;i++) {
new Thread(new Runnable() {
@Override
public void run() {
try {
Thread.sleep(10);
} catch (InterruptedException e) {
e.printStackTrace();
}
for(int i=0;i<100;i++) {
count++;
}
latch.countDown();
}
}).start();
}
try {
latch.await();
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("c