目录
1.CAS及使用
1.1. CAS概念
(1)CAS,其实是一种操作的简称,全称为:Compare and swap。
(2)通过全称,我们就可以知道,它的作用就是:比较并且交换,这里的操作数不是两个,而是三个。
(3)作用1:类似一个方法,有三个参数,A、V、B
比较A与V比较是否相等;如果相等,将B和A交换;反之,不进行任何操作。
上述的比较:是将A内存中的值和V寄存器中的值进行比较,如果它们里面的值相等,就会将B寄存器中的值赋值给A内存中。也就是将内存A中的值和寄存器B中的值进行交换,就不会考虑交换后寄存器B中的值。
(4)作用2:CAS可以保证这一系列操作是原子性的(保证线程安全)
上述将了一堆概念,下面介绍使用CAS的使用;因为JVM对CAS进行了封装,所以我们可以直接使用CAS提供的api就可以了。
1.2.原子类的使用
原子类也就是对cas封装后的抽象表示,但是cas不推荐大家使用,性价比低,安全隐患大。
(1)原子类
大约有下面这些原子类,通过下面的类操作一些数,是原子性的。
这里的类很多,我们这里只介绍一个:AtomicInteger
(2)AtomicInteger类
这个是我们比较常用的类,是对int的封装,对一个int数据进行++或者--操作,可以保证其是原子性,也就是线程安全。
- 创造一个AtomicInteger对象
private static AtomicInteger count = new AtomicInteger(0);
这句代码的意思就是:定义一个int遍历count,并且赋值为0,相当于int count = 0;只不过这样创造的变量可以调用这个类里面的方法进行++或者--操作,并且保证原子性。