Atomic原子类原理
1.原理
采用CAS的方式更改值,与Lock和syncronized相比效率更高,Lock和syncronized是采用悲观锁的方式保证线程安全的,而Atomic类采用的乐观锁保证线程安全。
2.涉及的类
AtomicInteger 操作整型数字
AtomicIntegerArray 操作整型数组
AtomicBoolean 操作布尔值
AtomicLong 操作长整型
AtomicLongArray 操作长整型数组
AtomicReference 操作引用类型
AtomicReferenceArray 操作引用类型数组
3.主要方法 (以AtomicBoolean为例)
public final boolean compareAndSet(boolean expect, boolean update) //更新值,比weakCompareAndSet效率更高
public boolean weakCompareAndSet(boolean expect, boolean update) //更新值,可能会返回一些错误不明确的信息,不保证有序性,也不会禁止重排序。
public final void lazySet(boolean newValue) //允许延迟的设置值
public final boolean getAndSet(boolean newValue) //设置值并且获取之前的值,该值一定会设置成功,线程安全
3.使用场景
多线程设置值得时候用