一、Java中提供的基本的原子类有:
AtomicBoolean,AtomicInteger,AtomicDouble
二、原子类的基本特征:
手段:
1)保证操作的原子性
2)保证多线程下的可见性。
目标:
保证线程安全
三、concurrent包常用的类:
AtomicInteger、AtomicLong、AtomicReference。
总结:其底层就是volatile和CAS 共同作用的结果:
1.首先使用了volatile 保证了内存可见性。
2.然后使用了CAS(compare-and-swap)(一种乐观锁)算法 保证了原子性。
其中CAS算法的原理就是里面包含三个值:内存值A 预估值V 更新值 B 当且仅当 V == A 时,V = B; 否则,不会执行任何操作。