CAS
- CAS:compare and swap,比较交换
- CAS有三个参数CAS(V,E,N)
- V表示要更新的变量
- E表示预期值
- N表示新值
- 只有V=E相等时,才会将V更新为N,否则说明其他线程进行了更新,什么也不做。
- 失败会被告知,允许再次尝试
|
|
- 上面的代码中,多个线程同时更改a的值时,无法确定a最后的值,对compareAndSwapInt进行加锁,使其成为一个原子操作,同一个时刻只有一个线程才可以改变a的值。
- CAS中的比较和替换是一组原子操作,不会被外部打断,先根据paramLong回去到当前内存中的值V,然后将内存值V和原值E做比较,相等则将V替换为N,效率要高于加锁的操作。
AtomicInteger
- 无锁的线程安全整数类
成员变量
|
|
构造方法
|
|
普通方法
|
|
原子方法
|
|
实例
- AtomicInteger累加
|
|
- AtomicIntegerArray累加
|
|