前言
李柱明博客:https://www.cnblogs.com/lizhuming/p/15486895.html
一、什么是原子操作
不可被中断的一个或者一系列操作、
CAS 是 Compare And Set 的缩写,是以一种 无锁的方式实现并发控制 。在实际情况下,同时操作同一个对象的概率非常小,所以多数加锁操作做的是无用功, CAS 以一种乐观锁的方式实现并发控制 。
二、实现原子操作的方式
Java 可以通过锁和循环 CAS 的方式实现原子操作。
三、CAS( Compare And Swap ) 为什么要有 CAS?
Compare And Swap 就是比较并且交换的一个原子操作,由 Cpu 在指令级别上进行保证。
为什么要有 CAS:因为通过锁实现原子操作时,其他线程必须等待已经获得锁的线程运行完以后才能获得资源,这样就会占用系统的大量资源
四、CAS 包含哪些参数?
CAS 包含三个参数:
- 变量所在内存地址 V;
- 变量对应的值 A;
- 我们将要修改的值 B。
如果说 V 上的变量的值是 A 的话,就用 B 重新赋值,如果不是 A,那就什么事也不做,操作的返回结果原值是多少。
循环 CAS:在一个(死)循环【for(;